我寫了一個python腳本使用create table if not exists
語句創建一個表,然後插入來自數據幀行到Vertica的數據庫。我第一次運行這個python腳本時,我希望它創建一個表並插入數據 - 它工作正常。插入Vertica的,如果表不存在或不是一個重複的行
但是從開始下一次,我希望它創建一個表只有當不存在(正常工作)且僅當該行沒有在數據庫中包含的數據插入它。
我同時使用insert
聲明,COPY
語句來插入數據。如何在Python中做到這一點?我正在使用pyodbc從python訪問Vertica數據庫。
編輯的帖子,包括一些代碼: 有一個名爲tableframe_df數據框,從中我需要填充內容到作爲波紋管創建一個表:
我在Vertica的創建表創建表如果不存在,則創建一個表,如果沒有的話。
cursor.execute("create table if not exists <tablename> (fields in the table)")
COPY statement to write to this table from a csv that was created
`cursor.execute("COPY tablename1 FROM LOCAL 'tablename.csv' DELIMITER ',' exceptions 'exceptions' rejected data 'rejected'")`
##for i,row in tablename_df.iterrows():
cursor.execute("insert into tablename2 values(?,?,?,?,?,?,?,?,?,?,?,?)",row.values[0],row.values[1],row.values[2],row.values[3],row.values[4],row.values[5],row.values[6],row.values[7],row.values[8],row.values[9],row.values[10],row.values[11])
在上面的代碼中,我創建表,然後使用COPY和插入插入到tablename1和tablename2中。這在第一次執行時工作正常(因爲表中沒有數據)。現在,如果我運行同一個腳本兩次,那麼數據將在這些表中插入兩次。 我應該執行什麼檢查以確保數據在已經存在的情況下不會被插入?
您需要實際顯示您需要幫助的Python代碼。我們不會爲您編寫代碼。 – Kermit
目前還不清楚你在問什麼。特別是你想弄清楚如何在Python中做什麼? 'COPY'?或者只有當該行的數據不存在於目標中時才使用INSERT?或兩者? – woot
我正在尋找這兩個,COPY或插入僅當該行的數據不存在於目標中。正如@kermit所問,我將包含我正在尋找的代碼 –