我通过以下方式从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)
好的-我在输入问题的时候解决了它-但我还是会发布它。您需要重新调整表(我猜在将'KEY_ID'列props重置为notnull之后),并且它只在如下运行时起作用:
但在那之后,ALTER命令就像一个符咒
相关问题 更多 >
编程相关推荐