DB2 добавляет первичный ключ к существующей таблице, созданной из Jupyter Lab с помощью SQL magi c 'PERSIST' - PullRequest
0 голосов
/ 30 мая 2020

Я создал образец таблицы из записной книжки Jupyter Lab через:

file_csv = 'data.csv'
df = pd.read_csv(file_csv)
df.insert(0, 'KEY_ID', df.index)

Затем добавил таблицу в DB2 в облаке IBM через:

%sql PERSIST df

Глядя на эту таблицу в консоли DB2, это создано без первичного ключа - поэтому я попытался исправить это:

ALTER TABLE DF
    ALTER COLUMN KEY_ID
    SET NOT NULL; 

И множество KEY_ID в качестве первичного ключа:

ALTER TABLE DF
    ADD PRIMARY KEY(KEY_ID);

Но DB2 упорно отказывается от следующей ошибки:

InternalError: (ibm_db_dbi.InternalError) ibm_db_dbi :: InternalError: Exception ('Ошибка выполнения оператора: [IBM] [драйвер CLI] [DB2 / LINUXX8664] SQL0668N Операция не разрешена из-за кода причины "7" на таблица «MYID9999.DF». SQLSTATE = 57016 \ r SQLCODE = -668 ')
[SQL: ALTER TABLE DF
ADD PRIMARY KEY (KEY_ID);]
(Справочная информация об этой ошибке: http://sqlalche.me/e/2j85)

1 Ответ

1 голос
/ 30 мая 2020

Хорошо - я действительно решил это, набирая вопрос, но я все равно отправлю его. Вам нужно ПЕРЕФОРМИРОВАТЬ таблицу (я думаю, после сброса реквизитов столбца KEY_ID на NOT NULL), и он работал только тогда, когда запускался следующим образом:

CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')

Но после этой команды ALTER работает как шарм.

...