Recommended method to import a .csv file into Microsoft SQL Server 2008 R2?

前端 未结 6 964
陌清茗
陌清茗 2021-01-02 04:21

What is your recommended way to import .csv files into Microsoft SQL Server 2008 R2?

I\'d like something fast, as I have a directory with a lot of .csv files (>500MB

6条回答
  •  走了就别回头了
    2021-01-02 04:53

    I should recommend this:

    using System;
    using System.Data;
    using Microsoft.VisualBasic.FileIO;
    
    namespace ReadDataFromCSVFile
      {
        static class Program
          {
            static void Main()
            {
                string csv_file_path=@"C:\Users\Administrator\Desktop\test.csv";
                DataTable csvData = GetDataTabletFromCSVFile(csv_file_path);
                Console.WriteLine("Rows count:" + csvData.Rows.Count);            
                Console.ReadLine();
            }
        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 csvData;
            }
          }
        }
    
    //Copy the DataTable to SQL Server using SqlBulkCopy
    
        function static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvData)
        {
           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);
                     }
                 }
          }
    

提交回复
热议问题