Массовая вставка SQL Server - Как определить отсутствующие поля? - PullRequest
1 голос
/ 09 мая 2011

Я уверен, что это обычная проблема, но я просто не могу найти именно ту помощь, которую ищу. Извиняюсь!

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

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

Какие-нибудь советы? Вот код, который я пытался использовать, чтобы сделать это.

BULK
INSERT tbl1_
FROM '\\...\importtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM tbl1_
GO
--Drop the table to clean up database.
SELECT *
FROM tbl1_
GO

1 Ответ

2 голосов
/ 09 мая 2011

Вы видели " Сохранение пустых значений или использование значений по умолчанию во время массового импорта ", которое относится к bcp и BULK INSERT? Некоторое время я не делал этого (я бы загрузил простую промежуточную таблицу и позже обогатил ее в отдельном шаге сброса), но похоже, что по умолчанию можно сохранить, когда вы используете:

INSERT ... SELECT * FROM OPENROWSET(BULK...)

Для пропущенных столбцов необходимо использовать файлы формата .

Две идеи немного отличаются. Лично я бы загрузил промежуточную таблицу, а затем скопировал из нее, чтобы столбцы CSV и промежуточной таблицы совпадали. Затем у меня будет 2-й шаг, где я загружаю «настоящую» таблицу. Это позволяет сначала проверить данные или выполнить некоторую обработку после bcp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...