簡體   English   中英

DB2 通過 SQL 魔術“PERSIST”將主鍵添加到從 Jupyter 實驗室創建的現有表中

[英]DB2 add Primary Key to existing table created from Jupyter Lab via SQL magic 'PERSIST'

我通過以下方式從 Jupyter Lab 筆記本創建了示例表:

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

然后通過以下方式將表添加到 IBM 雲上的 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 由於表“MYID9999.DF”上的原因代碼“7”,不允許操作。SQLSTATE =57016\r SQLCODE=-668')
[SQL:更改表 DF
添加主鍵(KEY_ID);]
(此錯誤的背景: http://sqlalche.me/e/2j85

好的 - 我實際上在輸入問題時解決了它 - 但無論如何我都會發布它。 您需要重組表(我猜是在將 'KEY_ID' 列屬性重置為 NOT NULL 之后)並且它僅在像這樣運行時才起作用:

CALL SYSPROC.ADMIN_CMD ('REORG TABLE DF')

但在那之后 ALTER 命令就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM