2015-10-21 5 views
0

У меня возникла проблема с использованием команды объемной вставки для ввода CSV в базу данных. Вот образец CSV I createdОшибка преобразования данных массовой загрузки (несоответствие типа или недопустимый символ для указанной кодовой страницы)

Вот запрос я писал:

BULK INSERT TBL_Staging FROM 'C:\Users\testdata.csv' With (FieldTerminator = ',', RowTerminator= '\n', KEEPNULLS); 

Это становится мне следующее сообщение об ошибке (ы):

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

ошибка Насыпная нагрузки преобразования данных (несоответствие типов или недопустимый символ для указанной кодовой страницы) для строки 2, столбец 2 (InvoiceHeaderId). Msg 4864, уровень 16, состояние 1, строка 1

ответ

0

Вы пытались удалить заголовок из своего файла? Как я вижу это, он обрабатывает строку заголовка как строку данных и возвращает ошибку, потому что она не в правильном формате. Если заголовок является проблемой, то предобработки ваши файлы, чтобы удалить его, потому что:

«Пропуск заголовков не поддерживается BULK INSERT заявление»

источник https://msdn.microsoft.com/en-us/library/ms188365.aspx

8

Первая строка вашего CSV данные содержат заголовки столбцов, а сообщение об ошибке - потому, что SQL Server пытается вставить строку заголовка в виде данных. Либо удалите строку заголовка столбца или указать FIRSTROW = 2

BULK INSERT TBL_Staging FROM 'C:\Users\testdata.csv' With (FIRSTROW=2, FieldTerminator = ',', RowTerminator= '\n', KEEPNULLS); 

В пользу тех, кто может читать это, не видя данных Аскер-х - = 2 параметра обходной путь FIRSTROW работает только если строка заголовка действительно имеют тот же количество столбцов и разделителей в качестве ваших данных - что в этом случае было сделано, но в противном случае было бы ошибкой.

Редактировать: Я заметил, что ваши данные также имеют некоторые значения, используя двойную кавычку как разделитель текста вокруг значений, содержащих запятую, поэтому вы, вероятно, увидите ошибку даже после удаления/пропуска строки заголовка. SQL BULK INSERT Сервера славится не поддерживает текстовые отборочные CSV, что привело к нескольким различным обходным на протяжении многих лет, в том числе, но не ограничиваясь:

  • Используя поле разделителя, кроме запятой, один из которых не происходит в ваши данные, такие как |
  • Указание 'формат файла' для массовой вставки

подробнее см этих существующих должностей:

Bulk Insert Correctly Quoted CSV File in SQL Server

SQL Bulk import from CSV