我想使用C#将CSV文件中的数据复制到SQL SERVER

本文关键字:数据 复制 SERVER SQL 文件 CSV | 更新日期: 2023-09-27 17:58:35

我正在尝试一些新的东西,即使用C#进行独立应用程序开发。我想将CSV文件中的数据复制到SQL Server数据库中,但对其他人来说似乎是这样。我已经讨论这个问题一整天了。请有人帮我。

StreamReader sr = new StreamReader(@filePath);
        string line = sr.ReadLine();
        string[] value = line.Split(',');
        DataTable dt = new DataTable();
        DataRow row;
        foreach (string dc in value)
        {
            dt.Columns.Add(new DataColumn(dc));
        }
        while (!sr.EndOfStream)
        {
            value = sr.ReadLine().Split(',');
            if (value.Length == dt.Columns.Count)
            {
                row = dt.NewRow();
                row.ItemArray = value;
                dt.Rows.Add(row);
            }
        }
        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
        {
            conn.Open();
            bulkCopy.DestinationTableName = "receipts";
            foreach (var column in dt.Columns)
            {
                bulkCopy.ColumnMappings.Add(column.ToString(), column.ToString());
                //MessageBox.Show(column.ToString());
            }
            bulkCopy.WriteToServer(dt);
            bulkCopy.Close();
            conn.Close();
        }

请问我的代码有什么问题?

我想使用C#将CSV文件中的数据复制到SQL SERVER

我终于解决了问题,一切都很完美!很抱歉迟发了答案。我所做的是使用for循环从数据表中读取数据并将其插入数据库。

这是代码;

            StreamReader sr = new StreamReader(@filePath);
            string line = sr.ReadLine();
            string[] value = line.Split(',');
            DataTable dt = new DataTable();
            DataRow row;
            foreach (string dc in value)
            {
                dt.Columns.Add(new DataColumn(dc));
            }
            while (!sr.EndOfStream)
            {
                value = sr.ReadLine().Split(',');
                if (value.Length == dt.Columns.Count)
                {
                    row = dt.NewRow();
                    row.ItemArray = value;
                    dt.Rows.Add(row);
                }
            }
            dgv.DataSource = dt;
            conn.Open();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                SqlCommand command = new SqlCommand("INSERT INTO [receipts] ([fullname], [state], [regno], [dept], [year], [session], [amount], [date], [faculty], [bank], [jamb]) VALUES('" + dt.Rows[i][1].ToString() + "', '" + dt.Rows[i][2].ToString() + "', '" + dt.Rows[i][3].ToString() + "', '" + dt.Rows[i][5].ToString() + "', '" + dt.Rows[i][6].ToString() + "', '" + dt.Rows[i][7].ToString() + "', '" + dt.Rows[i][8].ToString() + "', '" + dt.Rows[i][9].ToString() + "', '" + dt.Rows[i][10].ToString() + "', '" + dt.Rows[i][11].ToString() + "', '" + dt.Rows[i][4].ToString() + "')", conn);
                command.ExecuteNonQuery();
            }
            conn.Close();