【问题标题】:Saving a text file to a SQL database without column names将文本文件保存到没有列名的 SQL 数据库
【发布时间】:2009-05-28 20:45:54
【问题描述】:

我正在读取 C# 中的文本文件并尝试将其保存到 SQL 数据库。我很好,只是我不希望第一行(即列的名称)包含在导入中。排除这些最简单的方法是什么?

代码是这样的

while (textIn.Peek() != -1)
{
   string row = textIn.ReadLine();
   string[] columns = row.Split('   ');
   Product product = new Product();
   product.Column1 = columns[0];
   etc.....
   product.Save();
}

谢谢

【问题讨论】:

  • 您的文本文件似乎是制表符分隔的。如果是这种情况,您可以使用:row.Split("\t");

标签: c# sql text-files readline


【解决方案1】:

如果您自己编写代码以读取文件然后导入...为什么不跳过第一行?

【讨论】:

    【解决方案2】:

    这是我的建议:

    string[] file_rows;
    using(var reader=File.OpenText(filepath))
    {
    file_rows=reader.ReadToEnd().Split("\r\n");
    reader.Close();
    }
    
    for(var i=1;i<file_rows.Length;i++)
    {
    var row=file_rows[i];
    var cells=row.Split("\t");
    ....
    }
    

    【讨论】:

      【解决方案3】:

      你是如何导入数据的?如果您在 C# 中循环并一次插入一个,请构建循环以跳过第一个插入!

      或者只是删除它们之后插入的第一行。

      提供更多信息,获取更多详细信息...

      【讨论】:

        【解决方案4】:

        向程序传递一个标志(以防将来第一行也是数据),导致程序跳过第一行文本。

        如果它与数据库中使用的列名相同,您还可以对其进行解析以从中获取列名,而不是对它们进行硬编码(假设您目前正在这样做:))。

        最后一点,如果您使用的是 MySQL 数据库并且具有命令行访问权限,则可能需要查看LOAD DATA LOCAL INFILE 语法,该语法可让您导入任意定义的 CSV 数据。

        【讨论】:

          【解决方案5】:

          为了将来的参考,看看这个很棒的包:FileHelpers Library

          我还不能添加链接,但谷歌应该会提供帮助,它在 sourceforge 上

          当人们坚持使用文件作为集成时,这让我们的生活变得更加轻松

          【讨论】:

            猜你喜欢
            • 2018-09-27
            • 1970-01-01
            • 2022-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多