Утилита BCP искажает данные
-
21-08-2019 - |
Вопрос
Я запускаю массовое копирование двух столбцов таблицы с одного сервера на другой.
Таблица на стороне исходного кода содержит около 8 столбцов, но мне нужно только 2.
Таблица на стороне назначения содержит 2 столбца (те два, которые мне нужны, оба имеют тип int).
Обе базы данных являются SQL Server 2005.
Вот мои две команды bcp:
c:\> bcp "select c1, c2 from srcTable" queryout tableData.bcp -N -T -S srcServer
c:\> bcp destTable in tableData.bcp -N -T -S destServer
Почему это приводит к повреждению данных в целевой таблице?Я должен получать красивые последовательные целые числа, вместо этого я получаю это:
c1 c2
586332 83014148
123128736 -105042384
-561616278 -309997736
Что я делаю не так?
Решение
Понял.
Определение столбца должно точно совпадать - в том числе независимо от того, является ли оно НУЛЕВЫМ или НЕ НУЛЕВЫМ.
Источник имел:
srcTable (
c1 int not null (PK)
c2 int null
c3 datetime not null
c4 datetime null
...
)
Таблица назначения содержала:
destTable (
c1 int not null (PK)
c2 int not null
)
Значение NOT NULL в destTable.c2 было ошибкой.
Теперь его раздавили.