Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Prześlij plik CSV na serwer SQL

Po pierwsze, nie potrzebujesz programowania. Możesz bezpośrednio przesyłać pliki CSV do bazy danych SQL za pomocą narzędzi do zarządzania SQL. Jeśli jednak naprawdę potrzebujesz zrobić to poprzez programowanie, po prostu przeczytaj poniżej.

Osobiście uważam, że to podejście jest najskuteczniejszym i najłatwiejszym sposobem na wykonanie poprzez programowanie.

Ogólnie rzecz biorąc, możesz to osiągnąć w dwóch krokach

Pierwszy krok to odczytanie pliku CSV i przechowywanie rekordów jako DataTable .
Drugi krokiem jest zapisanie pobranych danych DataTable do tabeli bazy danych SQL jako wpis zbiorczy

Jest to funkcja, która zwraca dane pliku CSV jako DataTable . Zadzwoń i zachowaj go w pamięci, a będziesz mógł z nim robić, co chcesz.

Ta funkcja zwróci plik 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 — użyj tej funkcji, aby wstawić pobraną tabelę danych do tabeli 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);
         }
     }

Źródło



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework Core 2,0:jak raz skonfigurować abstrakcyjną klasę bazową

  2. SQL:klauzula IF w klauzuli WHERE

  3. Zwróć podstawowy typ danych z wartości wariantu SQL_w SQL Server

  4. Wewnętrzne elementy SQL Server:operatorzy problematyczni Pt. III – Rodzaje

  5. Jak zautomatyzować zbieranie danych w rozwoju bazy danych SQL Server