【问题标题】:Add data from CSV to a SQL Server table column将数据从 CSV 添加到 SQL Server 表列
【发布时间】:2013-09-26 14:58:45
【问题描述】:

我想将 CSV 文件中的数据添加到 SQL Server 中表的列中。我的代码正在运行,但数据未到达该列。

private void btCode_Click(object sender, RoutedEventArgs e)
{
        //string constring = "Data Source=.;Initial Catalog=*******;Integrated Security=True";
        string filepath = "C:\\code.csv";
        StreamReader sr = new StreamReader(filepath);
        string line = sr.ReadLine();
        string[] value = line.Split(',');
        DataTable dt = new DataTable();
        DataRow row;

        foreach (string Code in value)
        {
            dt.Columns.Add(new DataColumn(Code));
        }

同时:

while ( !sr.EndOfStream )
{
            value = sr.ReadLine().Split(',');
            if(value.Length == dt.Columns.Count)
            {
                row = dt.NewRow();
                row.ItemArray = value;
                dt.Rows.Add(row);
            }
}

SqlBulkCopy bc = new SqlBulkCopy(sc.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "CodesTable";
bc.BatchSize = dt.Rows.Count;
sc.Open();
bc.WriteToServer(dt);
bc.Close();
sc.Close();

【问题讨论】:

  • 你的文件有多少行?我想你已经确定批量复制如果失败? (你已经阅读了你的文件,你的数据表还可以吗?)
  • 如果 csv 文件中有 >= 2 行,为什么在 btCode_Click 中只调用 sr.ReadLine() 一次??

标签: c# sql sql-server wpf csv


【解决方案1】:

您不要尝试使用 OleDbConnection 直接读取 CSV,然后使用 OleDbDataAdapter 将其加载到数据表中。

其次,您可以添加 try catch 块以查看它是否引发了一些异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2013-07-17
    • 2019-07-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多