Erstens, Sie brauchen kein Programmierzeug. Sie können CSV-Dateien mit SQL-Verwaltungstools direkt in die SQL-Datenbank hochladen. Wenn Sie dies jedoch wirklich durch Programmierung tun müssen, lesen Sie einfach weiter unten.
Ich persönlich denke, dass dieser Ansatz der effizienteste und einfachste Weg ist, dies durch Programmierung zu tun.
Im Allgemeinen können Sie es in zwei Schritten erreichen
1. Schritt ist, die CSV-Datei zu lesen und die Datensätze als DataTable
zu speichern .
2. Schritt ist das Speichern der abgerufenen DataTable
als Masseneintrag in die SQL-Datenbanktabelle
Dies ist eine Funktion, die CSV-Dateidaten als DataTable
zurückgibt . Rufen Sie an und behalten Sie es im Gedächtnis, und Sie können damit machen, was Sie wollen.
Diese Funktion gibt eine CSV-Lesedatei in DataTable zurück.
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 - Verwenden Sie diese Funktion, um die abgerufene DataTable in die SQL-Tabelle einzufügen
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);
}
}
Quelle