Определите номер строки файла данных в Azure SQL Server - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь загрузить данные, используя BULK, и могу загрузить данные в Azure SQL Server для меньшего количества строк.Я знаю, что в файле данных есть проблема с ошибкой / форматом, но мой файл содержит миллионы записей, поэтому мне очень сложно проверить порцию данных за порцией.Я извлекаю данные из хранилища больших двоичных объектов, есть ли способ узнать точный номер строки файла, который вызывает следующую проблему.

Ошибка:

Msg 4832, Level 16, State 1, Line 22
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 22
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 22
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

Код:

BULK INSERT a.test
FROM 'cc'
WITH (
   DATA_SOURCE = 'Test'
  --, FORMAT = 'CSV'
  --,ROWS_PER_BATCH=1000000
 ,FIELDTERMINATOR = '|'
 ,ROWTERMINATOR = '|'
 ,MAXERRORS = 10000
 )

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 19 февраля 2019

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

Пожалуйста, прочитайте ссылку здесь - она ​​работает на более поздних версиях SQL Server (2017+).он также должен работать в SQL Azure.

https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017

...