DB2通过SQL magic“PERSIST”将主键添加到从Jupyter实验室创建的现有表中

2024-05-03 11:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过以下方式从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_db_dbi.InternalError) ibm_db_dbi::InternalError: Exception('Statement Execute Failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0668N Operation not allowed for reason code "7" on table "MYID9999.DF". SQLSTATE=57016\r SQLCODE=-668')
[SQL: ALTER TABLE DF
ADD PRIMARY KEY(KEY_ID);]
(Background on this error at: http://sqlalche.me/e/2j85)


Tags: csvkeyaddiddf方式tableibm
1条回答
网友
1楼 · 发布于 2024-05-03 11:33:32

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

CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')

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

相关问题 更多 >