sql >> Database >  >> RDS >> Sqlserver

Upload CSV-bestand naar SQL-server

Ten eerste, je hebt geen programmeerdingen nodig. U kunt CSV-bestanden rechtstreeks uploaden naar SQL Database met SQL-beheertools. Als je het echter echt moet doen door middel van programmeren, lees dan hieronder.

Persoonlijk denk ik dat deze aanpak de meest efficiënte en gemakkelijkste manier is om te doen door middel van programmeren.

Over het algemeen kunt u dit in twee stappen bereiken

1e stap is om het CSV-bestand te lezen en de records vast te houden als een DataTable .
2e stap is het opslaan van de opgehaalde DataTable in SQL Database-tabel als een bulkinvoer

Dit is een functie die CSV-bestandsgegevens retourneert als een DataTable . Bel en bewaar het in het geheugen en je kunt ermee doen wat je wilt.

Deze functie gaat het CSV Read-bestand terugsturen naar 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 - Gebruik deze functie om de Retrieved DataTable in Sql Table in te voegen

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);
         }
     }

Bron



  1. SQL Server 2016:Queryresultaten opslaan in een CSV-bestand

  2. Online schema-upgrade in MySQL Galera-cluster met behulp van de RSU-methode

  3. Wat is STATISTIEKENPROFIEL in SQL Server?

  4. Hoe de NVL()-functie te gebruiken in Oracle