У меня есть входной файл CSV. Данные в CSV заключены в текстовый квалификатор (двойные кавычки). Поэтому для массовой вставки, чтобы удалить двойные кавычки при вставке в таблицу, я использую параметр FORMAT = 'CSV'.
Один из столбцов в CSV содержит логические данные (TRUE / FALSE), и я хочу, чтобы они были вставлены в SQL таблицу (SQL 2017) как 1 и 0 со своими тип данных, как бит. Поэтому в файле формата я указал его тип как SQLBIT, а для других SQLCHAR.
Но при массовой вставке происходит сбой Ошибка:
Cannot bulk load CSV file. Invalid field parameters are specified for source column number 3 in the format file. All data fields must be either character or Unicode character with terminator when CSV format is specified.
Из вышеприведенной ошибки я понял одну вещь: когда я использую параметр FORMAT = 'CSV', я не может использовать SQLBIT в файле формата. С SQLCHAR он работает, но затем в таблице SQL я должен изменить тип данных на varchar (5) вместо бита, который мне не нужен.
Так есть способ, при котором я могу использовать оба SQLBIT в формате файл при использовании параметра FORMAT = 'CSV' ИЛИ если не SQLBIT, то любой другой метод для вставки значений в таблицу SQL как 1 и 0 без изменения типа данных?
Ввод CSV:
Id,Address,IsActive,CreatedDate
"I1","NY,U.S.","TRUE","2020-01-01"
"I2","Perth,Aus","FALSE","2020-02-01"
SQL ТАБЛИЦА:
Create table dbo.Bulk_Fmt_Test
(
Id char(2) not null,
Address varchar(255),
IsActive bit,
CreatedDate datetime2
)
Формат файла:
14.0
4
1 SQLCHAR 0 9999 "," 1 Id ""
2 SQLCHAR 0 9999 "," 2 Address ""
3 SQLBIT 0 1 "," 3 IsActive ""
4 SQLCHAR 0 9999 "\n" 4 CreatedDate ""
Массовая вставка Запрос:
BULK INSERT dbo.Bulk_Fmt_Test from 'C:\Data\Sample1.csv'
WITH (FORMAT = 'CSV', FIRSTROW = 2, FormatFile = 'C:\Data\Sample.fmt');