Вопрос

Я запускаю массовое копирование двух столбцов таблицы с одного сервера на другой.

Таблица на стороне исходного кода содержит около 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 было ошибкой.

Теперь его раздавили.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top