gpt4 book ai didi

c# - 将 CSV 文件上传到 SQL 服务器

转载 作者:IT王子 更新时间:2023-10-29 04:23:03 24 4
gpt4 key购买 nike

使用 C# 将大型 csv 数据文件上传到 SQL Server 的最佳方法是什么?该文件包含大约 30,000 行和 25 列。

最佳答案

第一,你不需要编程的东西。您可以使用 SQL 管理工具将 CSV 文件直接上传到 SQL 数据库。但是,如果您真的需要通过编程来完成,请阅读下文。

就我个人而言,我认为这种方法是通过编程完成的最有效和最简单的方法。

一般来说,分两步就可以实现

第 1 步是读取 CSV 文件并将记录保存为 DataTable
第 2 步是将检索到的 DataTable 作为批量条目存储到 SQL 数据库表中

这是一个将 CSV 文件数据作为 DataTable 返回的函数。 Call and Keep it in the memory 你可以用它做任何你想做的事。

此函数将返回 CSV 读取文件到 DataTable。

private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
try
{
using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
}
catch (Exception ex)
{
return null;
}
return csvData;
}
}

SQLBulkCopy - 使用此函数将检索到的 DataTable 插入到 SQL 表中

static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvFileData)
{
using(SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=yourDB;Integrated Security=SSPI;"))
{
dbConnection.Open();
using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
{
s.DestinationTableName = "Your table name";
foreach (var column in csvFileData.Columns)
s.ColumnMappings.Add(column.ToString(), column.ToString());
s.WriteToServer(csvFileData);
}
}

Source

关于c# - 将 CSV 文件上传到 SQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com