DB2将主键添加到通过SQL magic'PERSIST'从Jupyter Lab创建的现有表中

问题描述 投票:0回答:1

我通过以下方式从Jupyter Lab笔记本中创建了示例表:

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_db_dbi.InternalError)ibm_db_dbi :: InternalError:Exception('语句执行失败:[IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0668N由于表“ MYID9999.DF”上的原因代码为“ 7”,所以不允许执行操作。SQLSTATE = 57016 \ r SQLCODE = -668')[SQL:ALTER TABLE DF添加主键(KEY_ID);](此错误的背景位于:http://sqlalche.me/e/2j85

python sql pandas db2 jupyter-lab
1个回答
1
投票

[确定-我实际上在输入问题时解决了它-但我还是会发布它。您需要重新整理表(我想在将'KEY_ID'列属性重置为NOT NULL后才可以使用),并且仅在像这样运行时才起作用:

CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')

但是在那之后,ALTER命令就像一个超级按钮。

© www.soinside.com 2019 - 2024. All rights reserved.