我通过以下方式从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)
[确定-我实际上在输入问题时解决了它-但我还是会发布它。您需要重新整理表(我想在将'KEY_ID'列属性重置为NOT NULL后才可以使用),并且仅在像这样运行时才起作用:
CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')
但是在那之后,ALTER命令就像一个超级按钮。