Първо, нямате нужда от неща за програмиране. Можете директно да качвате CSV файлове в SQL база данни с инструменти за управление на SQL. Въпреки това, ако наистина трябва да го направите чрез програмиране, просто прочетете по-долу.
Лично аз смятам, че този подход е най-ефективният и най-лесният начин за осъществяване чрез програмиране.
По принцип можете да го постигнете в две стъпки
1-во стъпка е да прочетете CSV файла и да запазите записите като DataTable
.
2-ри стъпка е да съхранявате извлечената DataTable
в таблица на база данни на SQL като групов запис
Това е функция, която връща данни от CSV файл като DataTable
. Обадете се и го запазете в паметта и можете да правите каквото искате с него.
Тази функция ще върне 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 – Използвайте тази функция, за да вмъкнете извлечената таблица с данни в таблицата на 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);
}
}
Източник