sql >> Databáze >  >> RDS >> Sqlserver

Nahrajte soubor CSV na SQL server

Za prvé, nepotřebujete programovací věci. Pomocí nástrojů pro správu SQL můžete přímo nahrávat soubory CSV do databáze SQL. Pokud to však opravdu potřebujete udělat pomocí programování, přečtěte si níže.

Osobně si myslím, že tento přístup je nejúčinnější a nejsnadnější způsob, jak to provést pomocí programování.

Obecně toho můžete dosáhnout ve dvou krocích

1. krokem je načíst soubor CSV a uchovávat záznamy jako DataTable .
2. krok je uložení načtené DataTable do tabulky databáze SQL jako hromadný záznam

Toto je funkce, která vrací data souboru CSV jako DataTable . Zavolej a ulož si to do paměti a můžeš si s tím dělat, co chceš.

Tato funkce vrátí soubor CSV Read do 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 – Tato funkce slouží k vložení tabulky Retrieved DataTable do tabulky 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);
         }
     }

Zdroj



  1. Převést „čas“ na „smalldatetime“ v SQL Server (příklady T-SQL)

  2. Časový limit dotazu SQL Server v závislosti na klauzuli Where

  3. Počítání počtu spojených řádků v levém spojení

  4. Rozdíly mezi INDEX, PRIMARY, UNIQUE, FULLTEXT v MySQL?