Массовая вставка SQL Server 2005 с ошибкой файла формата - PullRequest
0 голосов
/ 01 декабря 2011

список ошибок

Сообщение 4866, Уровень 16, Состояние 7, Строка 2
Массовая загрузка не удалась. Столбец слишком длинный в файле данных для строки 1, столбца 1. Убедитесь, что терминатор поля и терминатор строки указаны правильно.

Сообщение 7399, Уровень 16, Состояние 1, Строка 2
Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке.

Сообщение 7330, Уровень 16, Состояние 2, Строка 2
Невозможно получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)".

файл fmt

9.0
10
1       SQLCHAR       2       50      ","   2     EmployeeSSN       SQL_Latin1_General_CP1_CI_AS                    
2       SQLCHAR       2       50      ","   3     DOB               SQL_Latin1_General_CP1_CI_AS                       
3       SQLCHAR       2       50      ","   4     Gender            SQL_Latin1_General_CP1_CI_AS                       
4       SQLCHAR       2       50      ","   5     Relcode           SQL_Latin1_General_CP1_CI_AS                          
5       SQLCHAR       2       50      ","   6     EmployeeID           SQL_Latin1_General_CP1_CI_AS                      
6       SQLCHAR       2       50      ","   7     AssessmentType       SQL_Latin1_General_CP1_CI_AS                    
7       SQLCHAR       2       50      ","   8     MeasurementDate      SQL_Latin1_General_CP1_CI_AS                       
8       SQLCHAR       2       50      ","   9     RecordCreationDate   SQL_Latin1_General_CP1_CI_AS                    
9       SQLCHAR       2       50      ","   10    AttributeID       SQL_Latin1_General_CP1_CI_AS                              
10      SQLCHAR       2       50      "/r/n"   11   AttributeValue    SQL_Latin1_General_CP1_CI_AS

Массовая вставка кода

BULK insert *******_raw_data
from 'E:\*****_csv\BWC_To_*****_2.csv'
with (formatfile = 'c:\*******_raw_data-n.fmt');

первая строка из csv

NULL,07/14/1983,F,S,105***,HRA,09/28/2011,09/28/2011,19,1

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

1 Ответ

1 голос
/ 18 декабря 2011

Первая ошибка: Сообщение 4866, уровень 16, состояние 7, строка 2 Массовая загрузка не удалась. Слишком длинный столбец в файле данных для строки 1, столбца 1. Убедитесь, что терминатор поля и терминатор строки указаны правильно.

Это либо проблема с NULL, либо с разделителем строк. Последний терминатор для строки не может быть "/ r / n", это может быть "/ n". Лучше всего это подтвердить с помощью Hex Editor.

Вторая и третья ошибка: Все это похоже на проблему NULL.

Правильный способ обработки нулей в BULK INSERT - указать опцию KEEPNULLS.

with (formatfile = 'c:\*******_raw_data-n.fmt',KEEPNULLS);

Создать CSV-файлы с пустым полем для значений NULL.

,07/14/1983,F,S,105***,HRA,09/28/2011,09/28/2011,19,1
...