Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Качете CSV файл на SQL сървър

Първо, нямате нужда от неща за програмиране. Можете директно да качвате CSV файлове в SQL база данни с инструменти за управление на SQL. Въпреки това, ако наистина трябва да го направите чрез програмиране, просто прочетете по-долу.

Лично аз смятам, че този подход е най-ефективният и най-лесният начин за осъществяване чрез програмиране.

По принцип можете да го постигнете в две стъпки

1-во стъпка е да прочетете CSV файла и да запазите записите като DataTable .
2-ри стъпка е да съхранявате извлечената DataTable в таблица на база данни на SQL като групов запис

Това е функция, която връща данни от CSV файл като DataTable . Обадете се и го запазете в паметта и можете да правите каквото искате с него.

Тази функция ще върне CSV файла за четене в 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 – Използвайте тази функция, за да вмъкнете извлечената таблица с данни в таблицата на 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);
         }
     }

Източник



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвам каскадно изтриване със SQL Server?

  2. Изключване на колона с помощта на SELECT * [освен колонаA] FROM tableA?

  3. Как да извлека записи за последните 30 минути в MS SQL?

  4. Бройте въз основа на условие в SQL Server

  5. T-SQL - Вмъкване на данни в родителски и дъщерни таблици