2014-01-28 3 views
1

У меня есть файл данных, содержащий поле datetime в формате (yyyy mm dd). Я создал файл формата bcp для импорта данных, но при запуске оператора я получаю сообщение об ошибке Ошибка преобразования данных массовой загрузки (тип несоответствия или недопустимый символ для указанной кодовой страницы) для строки 1, столбец 16 (ReleaseDate).BULK INSERT из файла данных вызывает ошибку в типе datetime

Как сообщить программе bcp об обработке поля в формате (yyyy mm dd) или преобразовать формат в этот сервер sql?

+1

импортировать его в столбце varchar, а затем выполнять манипуляции с строками внутри сервера sql, что сэкономит вам много хлопот. –

+0

Я сделал это раньше, и он работает. Он работает для десятичного (8,3) типа, но не для типов «bigint». Я просто задавался вопросом, есть ли прямой способ сделать это! – CodeWeed

ответ

1

У меня есть два комментария к проблеме.

Первый, убедитесь, что вы используете кодовую страницу ASCII, а не UNICODE, которая представляет собой два байта.

Второй, если у BCP возникают проблемы, вы можете играть с файлом формата.

Если это не сработает, переключитесь с ETL на Extract Load Translate (ELT).

Массовая загрузка из файла в столбец varchar() в таблице. Перевести хранимую процедуру на нужный тип данных.

+1

'BULK load from file to VARCHAR()'; это обычно делает трюк, потому что он позволяет даже плохие значения и дает вам возможность очистить плохие данные до окончательного ввода в конечный пункт назначения. – Question3CPO

+0

Я скорее использую SSIS, так как я могу направлять плохие строки в больничный стол для последующей обработки или просмотра. Просто мои предпочтения. Но я сделал это и в прошлом. –