Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

CSV-Datei auf den SQL-Server hochladen

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