Я делал импорт данных с помощью задачи SQL Server BULK INSERT
сотни раз, но на этот раз я получаю сообщение об ошибке, которое незнакомо, и что я попытался устранить неполадки безрезультатно с Google. Ниже приведен код, я использую с разделителями deliminated файл, в котором новые строки обозначены новые строки символов:Ошибка в массовой вставке «Ошибка преобразования данных массовой загрузки (усечение)»
BULK INSERT MyTable
FROM 'C:\myflatfile.txt'
WITH (
FIELDTERMINATOR = ','
,ROWTERMINATOR = '/n')
GO
Он постоянно работает, но теперь на простой файл с датой и скоростью, это провал с ошибка «Msg 4863, уровень 16, состояние 1, строка 1 Ошибка преобразования данных массовой загрузки (усечение) для строки 1, столбец 2 (столбец)." Когда я смотрю на файл, я не понимаю, почему это может потерпеть неудачу (обычно устранение неполадок Google указывает на то, что разделители могут существовать несколько раз в строке, что приведет к возникновению этой ошибки). Из файла, вот первые десять строк (обратите внимание, что он не на первой линии):
1961-01-01,8.2
1961-02-01,8.2
1961-03-01,7.4
1961-04-01,7.6
1961-05-01,7.8
1961-06-01,8.5
1961-07-01,9.1
1961-08-01,8.8
1961-09-01,8.4
1961-10-01,8.8
Таблица, я вставив эти данные в два поля Thare являются VARCHAR(50)
, несмотря на то, когда я сначала видел усечение I расширило поля данных до VARCHAR(2000)
, и это не повлияло на это.
CREATE TABLE MyTable (
ColumnOne VARCHAR(50),
ColumnTwo VARCHAR(50)
)
Я также попытался удалить все черточки, чтобы увидеть, если это был Мессинг вещи (хотя я сделал много импорта данных с прочерками, используя этот же код и он работает без ошибок), и он все-таки получил то же сообщение об ошибке.
Прямой импорт работает (через Tasks
), как и SSIS, но как насчет этого кода не удается, так как это должно быть то же самое?
Thanks; как я могу отличить, является ли это '/ n' или '0x0a', как в файле, он кажется новым символом линии? Я этого раньше не видел. – Tim
Если ваш файл из системы на основе UNIX, вы должны использовать '0x0a' обычно (поскольку UNIX использует только \ n - linefeed в качестве терминатора). Если ваш файл находится на базе Windows, объемная копия фактически будет использовать \ r \ n, даже если вы укажете только \ n (это как возврат каретки, так и перевод строки). – EkoostikMartin