into - mssql csv to table



Импорт CSV-файла в SQL Server (6)

2) Если клиент создает csv из excel, тогда данные, имеющие запятую, заключены в «...» (двойные кавычки) [в качестве примера ниже], так как импорт может справиться с этим?

Вы должны использовать FORMAT = 'CSV', FIELDQUOTE = '"' опции:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FORMAT = 'CSV', 
    FIELDQUOTE = '"',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

https://ffff65535.com

Я ищу помощь для импорта .csv файла в SQL Server с помощью BULK INSERT и у меня есть несколько основных вопросов.

Вопросы:

  1. Данные файла CSV могут иметь (запятую) между (Ex: description), поэтому как я могу импортировать эти данные?

  2. Если клиент создает CSV из Excel, то данные, имеющие запятую, заключены в "" (двойные кавычки) [в качестве примера ниже], так как импорт может справиться с этим?

  3. Как мы отслеживаем, если в некоторых строках есть плохие данные, импорт которых пропускает? (импорт импортирует строки, которые не являются импортируемыми)

Вот пример CSV с заголовком:

Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

И выражение SQL для импорта:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

Импортируйте CSV-файл в базу данных с помощью SQL Server Management Studio.

  1. Сначала создайте таблицу в своей базе данных, в которую вы импортируете CSV-файл.
  2. Войдите в свою базу данных с помощью SQL Server Management Studio.
  3. Щелкните правой кнопкой мыши базу данных и выберите «Задачи -> Импорт данных ...»
  4. Нажмите кнопку «Далее».
  5. Для источника данных выберите «Плоский файл». Затем используйте кнопку «Обзор», чтобы выбрать файл CSV. Проведите некоторое время, настроив импорт данных, прежде чем нажимать кнопку «Далее».
  6. В поле «Назначение» выберите нужного поставщика базы данных (например, для SQL Server 2012 вы можете использовать собственный клиент SQL Server 11.0). Введите имя сервера; установите флажок Использовать проверку подлинности SQL Server, введите имя пользователя, пароль и базу данных, прежде чем нажать кнопку «Далее».
  7. В окне «Выбор исходных таблиц и представлений» вы можете редактировать сопоставления перед нажатием кнопки «Далее».
  8. Проверьте Запуск сразу и нажмите кнопку «Далее».
  9. Нажмите кнопку «Готово», чтобы запустить пакет.

website


Импорт CSV на основе SQL Server

1) Данные файла CSV могут иметь (запятую) между (Ex: description), поэтому как я могу импортировать эти данные?

Решение

Если вы используете , (запятая) в качестве разделителя, тогда нет возможности различать запятую как терминатор поля и запятую в ваших данных. Я бы использовал другой FIELDTERMINATOR такой как || , Код будет выглядеть так, и это отлично справится с запятой и одной косой чертой.

2) Если клиент создает csv из excel, тогда данные, имеющие запятую, заключены в " ... " (двойные кавычки) [в качестве примера ниже], так как импорт может справиться с этим?

Решение

Если вы используете BULK-вставку, тогда невозможно обработать двойные кавычки, данные будут вставлены с двойными кавычками в строки. после вставки данных в таблицу вы можете заменить эти двойные кавычки на " ».

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) Как мы отслеживаем, если в некоторых строках есть плохие данные, импорт которых пропускает? (импортирует ли пропуски строки, которые не импортируются)?

Решение

Чтобы обрабатывать строки, которые не загружаются в таблицу из-за недопустимых данных или формата, может обрабатываться с использованием свойства ERRORFILE , указать имя файла ошибки, он будет записывать строки с ошибкой в ​​файл ошибки. код должен выглядеть так.

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )

Поскольку они не используют мастер импорта SQL, будут выполняться следующие шаги:

  1. Щелкните правой кнопкой мыши по базе данных в задачах параметров для импорта данных,

  2. Когда мастер открыт, мы выбираем тип данных, которые должны подразумеваться. В этом случае это будет

Плоский файловый источник

Мы выбираем файл CSV, вы можете настроить тип данных таблиц в CSV, но лучше всего вывести его из CSV.

  1. Нажмите «Далее» и выберите в последней опции, которая

Клиент SQL

В зависимости от нашего типа аутентификации мы выбираем его, как только это делается, появляется очень важный параметр.

  1. Мы можем определить идентификатор таблицы в CSV (рекомендуется, чтобы столбцы CSV назывались такими же, как поля в таблице). В опции «Редактировать сопоставления» мы можем просмотреть предварительный просмотр каждой таблицы с помощью столбца таблицы, если мы хотим, чтобы мастер вставлял идентификатор по умолчанию, мы оставляем опцию непроверенной.

Включить ввод идентификатора

(обычно не начиная с 1), вместо этого, если у нас есть столбец с идентификатором в CSV, мы выбираем вставку идентификатора включения, следующим шагом является завершение работы мастера, мы можем просмотреть изменения здесь.

С другой стороны, в следующем окне могут появляться предупреждения или предупреждения, идеал должен игнорировать это, только если они оставляют ошибку , необходимо обратить внимание.

Эта ссылка имеет изображения .


Сначала вам нужно создать таблицу в своей базе данных, в которой вы будете импортировать CSV-файл. После создания таблицы выполните следующие действия.

• Войдите в свою базу данных с помощью SQL Server Management Studio

• Щелкните правой кнопкой мыши по базе данных и выберите Tasks -> Import Data...

• Нажмите кнопку « Next >

• Для источника данных выберите « Flat File Source . Затем используйте кнопку «Обзор», чтобы выбрать файл CSV. Потратьте некоторое время на настройку того, как вы хотите импортировать данные, прежде чем нажимать кнопку « Next > .

• Для пункта назначения выберите нужного поставщика базы данных (например, для SQL Server 2012 вы можете использовать собственный клиент SQL Server 11.0). Введите имя сервера. Установите флажок Use SQL Server Authentication . Введите имя пользователя, пароль и базу данных, прежде чем нажимать кнопку « Next > .

• В окне «Выбор исходных таблиц и представлений» вы можете редактировать сопоставления, прежде чем нажимать кнопку « Next > .

• Установите флажок « Run immediately и нажмите кнопку « Next > .

• Нажмите кнопку « Finish , чтобы запустить пакет.

Вышеупомянутое было найдено на этом website (я его использовал и протестировал):


Чтобы импортировать CSV-файл в таблицу данных

Затем вы можете вставлять массивные строки с помощью SQLBulkCopy

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkInsertExample
{
    class Program
    {
      static void Main(string[] args)
        {
            DataTable prodSalesData = new DataTable("ProductSalesData");

            // Create Column 1: SaleDate
            DataColumn dateColumn = new DataColumn();
            dateColumn.DataType = Type.GetType("System.DateTime");
            dateColumn.ColumnName = "SaleDate";

            // Create Column 2: ProductName
            DataColumn productNameColumn = new DataColumn();
            productNameColumn.ColumnName = "ProductName";

            // Create Column 3: TotalSales
            DataColumn totalSalesColumn = new DataColumn();
            totalSalesColumn.DataType = Type.GetType("System.Int32");
            totalSalesColumn.ColumnName = "TotalSales";

            // Add the columns to the ProductSalesData DataTable
            prodSalesData.Columns.Add(dateColumn);
            prodSalesData.Columns.Add(productNameColumn);
            prodSalesData.Columns.Add(totalSalesColumn);

            // Let's populate the datatable with our stats.
            // You can add as many rows as you want here!

            // Create a new row
            DataRow dailyProductSalesRow = prodSalesData.NewRow();
            dailyProductSalesRow["SaleDate"] = DateTime.Now.Date;
            dailyProductSalesRow["ProductName"] = "Nike";
            dailyProductSalesRow["TotalSales"] = 10;

            // Add the row to the ProductSalesData DataTable
            prodSalesData.Rows.Add(dailyProductSalesRow);

            // Copy the DataTable to SQL Server using SqlBulkCopy
            using (SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=dbProduct;Integrated Security=SSPI;Connection Timeout=60;Min Pool Size=2;Max Pool Size=20;"))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = prodSalesData.TableName;

                    foreach (var column in prodSalesData.Columns)
                        s.ColumnMappings.Add(column.ToString(), column.ToString());

                    s.WriteToServer(prodSalesData);
                }
            }
        }
    }
}




bulk