db2通过sql魔术“persist”将主键添加到从jupyter实验室创建的现有表中

z9ju0rcb  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(416)

我通过以下方式从jupyter实验室笔记本创建了示例表:

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

然后通过以下方式将表添加到ibm cloud上的db2:

%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\u db\u dbi.internalerror)ibm\u db\u dbi::internalerror:exception('语句执行失败:[ibm][cli driver][db2/linux8664]sql0668n表“myid9999.df”上的原因代码“7”不允许执行操作。sqlstate=57016\r sqlcode=-668')
[sql:alter table df]表
添加主键(key_id);]
(此错误的背景信息:http://sqlalche.me/e/2j85)

jdgnovmf

jdgnovmf1#

好的-我在输入问题的时候解决了它-但是我还是会发布它。您需要重新调整表(我猜是在将'key\ id'列props重置为not null之后),它只在如下运行时起作用:

CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')

但在那之后,alter命令就像一个符咒。

相关问题