Массовая вставка с соответствующими столбцами между таблицей в SQL Server и csv-файлом

#sql #sql-server #csv

#sql #sql-сервер #csv

Вопрос:

У меня есть .csv файл (поступающий из Excel), и я использую BULK INSERT скрипт для вставки его в мою таблицу SQL Server. Количество столбцов в таблице больше, чем количество столбцов в .csv файле.

Пример: моя таблица в SQL Server содержит 20 столбцов, я хочу указать вставку только для 5 столбцов, которые существуют в моем .csv файле.

 BULK INSERT [DbTest].[dbo].[Costumer]
FROM 'F:DataCostumer2020.csv'
WITH
    (FIRSTROW = 0,
     FIELDTERMINATOR = ',',  --CSV field delimiter
     ROWTERMINATOR = 'n',   --Use to shift the control to next row
     KEEPNULLS,
     TABLOCK)
  

Есть ли какой-либо способ указать столбцы в скрипте вставки, которые будут соответствовать столбцам файла csv?

Заранее благодарю вас 🙂

Комментарии:

1. При использовании BULK INSERT определения 2 объекты должны совпадать. Если они этого не делают. вам нужно будет BULK INSERT преобразовать таблицу в промежуточную таблицу, а INSERT ее — в конечную таблицу назначения.

2. Используйте параметр formatfile или создайте представление с нужными столбцами и вставьте в представление

3. Используйте файл формата, как рекомендует @SMor.