【问题标题】:How do I add records to a table from a text file?如何从文本文件向表中添加记录?
【发布时间】:2017-01-22 16:43:58
【问题描述】:

我有一个名为 statelist 的表,如下所示:

abbrev nvarchar(2);
name   nvarchar(50);

我有一个名为 state_list.txt 的文本文件,其中包含以下格式的状态列表:

'AL','Alabama'
'AK','Alaska'
'AR','Arkansas'

我想从文本文件中获取数据到 statelist 表中。是否有某种 SQL 插入或其他代码来执行此操作?

【问题讨论】:

  • 那是一个CSV,解析它或者使用CSVHelper之类的工具返回一个类型化的列表,或者直接用OLEDB加载到数据表中
  • 试一试something,当你遇到困难时提出问题
  • string[] 部分 = Textreader.Readline().Split(','); com.Parameter.AddWithValue("@state",parts[0]); com.Parameter.AddWithValue("@State_Name",parts[1]);搜索这些类将使您了解如何实现它们。如果您遇到困难,请发布您的代码和您遇到的具体问题。

标签: c# append text-files


【解决方案1】:

好吧,您没有指定数据库等内容,但这是我最好的猜测。我为 MsSql 数据库构建了它,但您可以通过几个简单的步骤为 mySql 调整它(首先安装 mySQL 连接器)。 我没有在我的 atm 可用的 MsSQl 数据库,所以我没有在家里尝试它,但它应该像这样工作。当然编辑连接字符串,使其适合您的数据库

        string fileName = "state_list.txt";
        var lines = File.ReadLines(fileName);

        Dictionary<string,string> splitted = new Dictionary<string,string>();
        foreach (var line in lines)
        {
            string[] splitter = line.Split(',');
            splitted.Add(splitter[0], splitter[1]); //Add eatch splitted line to dictionary so you can use key and value to insert into table
        }


        string connStr ="server = localhost; user = root; database = yourdb; port = 3306; password = xxxxxxxxx;"; // CREATE CONNECTION WITH YOUR DATABASE INFORMATION
        SqlConnection conn = new SqlConnection(connStr);
        try
        {
            conn.Open();
            SqlCommand comm = conn.CreateCommand();
            comm.CommandText = "INSERT INTO state_list(code,area) VALUES(@code, @area)";

            foreach (KeyValuePair<string, string> pair in splitted)
            {
                comm.Parameters.Add("@code", pair.Key);
                comm.Parameters.Add("@areas", pair.Value);
                comm.ExecuteNonQuery(); // INSERT EACH PAIR INTO DATABASE
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        conn.Close(); //CLOSE CONNECTION

【讨论】:

    【解决方案2】:

    (1) 解析 .txt 文件并 (2) 将记录添加到数据库。您可以使用实体框架或任何其他 ORM,或使用 @Jurriaan 建议的 ADO。

    【讨论】:

      【解决方案3】:

      如果您使用的是实体框架,则可以使用这种方法。

         using(var context = new YourContext())
         {
              List<YourEntity> entities = new List<YourEntity>();
              File.ReadAllLines("PathToFile")
                  .ToList()
                  .ForEach(s =>
                  {
                     string[] split = s.Split(',');
                     someList.Add(new YourEntity(split[0], split[1])); // Or set properties if not using a constructor.
                  });
      
              context.YourTable.AddRange(entities);
              context.SaveChanges();
         }
      

      【讨论】:

        【解决方案4】:

        我能想到的一种方法是使用 ReadLine() 从文本文件中读取每一行,然后在该行上使用 Split(',') 以获取字符串数组中的缩写和名称,然后您可以轻松地将它们添加到您的数据库在一个while循环中。

        【讨论】:

          【解决方案5】:

          从文件中删除 ' 然后运行下面的命令。

          Bulk Insert [dbo].[TableName]
          From 'C:\FileName.csv'
          with
          (
          FIELDTERMINATOR = ',', -- For Comma Seperated File
          RowTerminator = '\n' -- RowTernimator i.e new Line
          )
          

          前一阵子做了这个,当时添加到博客中——http://dotnetdevblog.blogspot.com/2007/10/bulk-inserting-from-csv-file-into.html

          【讨论】:

            猜你喜欢
            • 2017-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多