For det første behøver du ikke programmeringsting. Du kan uploade CSV-filer direkte til SQL-databasen med SQL-administrationsværktøjer. Men hvis du virkelig har brug for at gøre det gennem programmering, læs bare nedenfor.
Personligt synes jeg, at denne tilgang er den mest effektive og nemmeste måde at gøre det på gennem programmering.
Generelt kan du opnå det i to trin
1. trin er at læse CSV-filen og opbevare posterne som en DataTable
.
2. trin er at gemme den hentede DataTable
ind i SQL-databasetabel som en masseindtastning
Dette er en funktion, der returnerer CSV-fildata som en DataTable
. Ring og gem det i hukommelsen, og du kan gøre, hvad du vil med det.
Denne funktion vil returnere CSV Read-fil til 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 - Brug denne funktion til at indsætte den hentede datatabel i SQL-tabellen
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);
}
}
Kilde