Ten eerste, je hebt geen programmeerdingen nodig. U kunt CSV-bestanden rechtstreeks uploaden naar SQL Database met SQL-beheertools. Als je het echter echt moet doen door middel van programmeren, lees dan hieronder.
Persoonlijk denk ik dat deze aanpak de meest efficiënte en gemakkelijkste manier is om te doen door middel van programmeren.
Over het algemeen kunt u dit in twee stappen bereiken
1e stap is om het CSV-bestand te lezen en de records vast te houden als een DataTable
.
2e stap is het opslaan van de opgehaalde DataTable
in SQL Database-tabel als een bulkinvoer
Dit is een functie die CSV-bestandsgegevens retourneert als een DataTable
. Bel en bewaar het in het geheugen en je kunt ermee doen wat je wilt.
Deze functie gaat het CSV Read-bestand terugsturen naar 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 - Gebruik deze functie om de Retrieved DataTable in Sql Table in te voegen
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);
}
}
Bron