Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Carica il file CSV sul server SQL

In primo luogo, non hai bisogno di materiale di programmazione. Puoi caricare direttamente i file CSV nel database SQL con gli strumenti di gestione SQL. Tuttavia, se hai davvero bisogno di farlo attraverso la programmazione, leggi di seguito.

Personalmente, penso che questo approccio sia il modo più efficiente e più semplice per eseguire la programmazione.

In generale, puoi ottenerlo in due passaggi

il passaggio consiste nel leggere il file CSV e conservare i record come DataTable .
il passaggio è memorizzare il DataTable recuperato nella tabella del database SQL come voce in blocco

Questa è una funzione che restituisce i dati del file CSV come DataTable . Chiamalo e tienilo in memoria e puoi fare quello che vuoi con esso.

Questa funzione restituirà il file CSV Read in 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:utilizzare questa funzione per inserire la tabella dati recuperata nella tabella 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);
         }
     }

Fonte