sql >> Databasteknik >  >> RDS >> Sqlserver

Ladda upp CSV-fil till SQL-server

För det första, du behöver inga programmeringsgrejer. Du kan ladda upp CSV-filer direkt till SQL Database med SQL-hanteringsverktyg. Men om du verkligen behöver göra det genom programmering, läs bara nedan.

Personligen tror jag att detta tillvägagångssätt är det mest effektiva och enklaste sättet att göra genom programmering.

I allmänhet kan du uppnå det i två steg

första steget är att läsa CSV-filen och hålla posterna som en DataTable .
2:a steget är att lagra den hämtade DataTable i SQL Database Table som en bulkpost

Detta är en funktion som returnerar CSV-fildata som en DataTable . Ring och spara den i minnet så kan du göra vad du vill med den.

Denna funktion kommer att returnera CSV Read-fil till 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 - Använd den här funktionen för att infoga den hämtade datatabellen i SQL-tabellen

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

Källa



  1. Följ med oss ​​för en introduktion till åtkomst med SQL Server

  2. Infoga flera poster i Oracle

  3. Massinfoga datafiler i SQL Server

  4. Hur man skapar en användare med pgAdmin