Sybase IQ: таблица загрузки со столбцом автоинкремента

Мне нужно перенести таблицу из базы данных А в базу данных Б, в таблице есть столбец автоинкремента. Содержимое таблицы в новой базе данных должно быть идентичным таблице в исходной базе данных, включая значения в столбце автоинкремента.

Следующая таблица LOAD TABLE, где col1 — это столбец автоинкремента, не работает:

set identity_insert TableName on;
LOAD TABLE TableName
(col1,col2,col3)
FROM 'file.csv';

Я получаю следующую ошибку:

Невозможно вставить или обновить столбец col1: задайте для параметра 'identity_insert' имя конкретной таблицы, содержащей изменяемый столбец идентификаторов.

Тем не менее, я устанавливаю опцию identity_insert. Что не так с этой командой?


person ps0604    schedule 24.07.2014    source источник
comment
на какой версии sybase IQ вы работаете?   -  person Hotel    schedule 24.07.2014


Ответы (2)


Пожалуйста, попробуй

SET TEMPORARY OPTION IDENTITY_INSERT = 'MyTable';

Это обсуждалось на SCN.

person frlan    schedule 24.07.2014

DEFAULTS OFF похоже, что его следует использовать в качестве опции, если вы хотите переопределить значение идентификатора по умолчанию (автоинкремент).

см.: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00801.1530/doc/html/san1281564935243.html

Если это не сработает, и это всего лишь один раз... самый простой способ сделать это - загрузить таблицу в TableName_work, которая не имеет автоинкремента, а затем вставить данные в место назначения с помощью оператора select с identity_insert on .

person Hotel    schedule 24.07.2014