2017-11-29 24 views
0

私は新しいoracle学習者です。私はpandasデータフレームをoracleテーブルに挿入しようとしています。私は研究をオンラインにしましたが、コード自体(https://www.snip2code.com/Snippet/704409/Insert-pandas-dataframe-to-Oracle-databa/)は非常にシンプルであるべきですが、私のコードがなぜ機能しないのか分かりません。DatabaseError:ORA-00928:SELECTキーワードがありません

私は私のローカルファイルからパンダのデータフレームを読みました:その後、私は使用して、データベースとの接続を作成

DATE   YEAR  MONTH  SOURCE  DESTINATION 
0 11/1/2017 1:00 2017  1   AL   CO 
1 11/2/2017 1:00 2017  5   GA   ID 
2 11/3/2017 1:00 2017  12   GA   MO  

import cx_Oracle 
import pandas as pd 
import os 

dir_path = os.path.dirname(os.path.realpath("__file__")) 
df = pd.read_csv(dir_path+"/sample.csv") 

は今データフレームDFは、このようなことSHOLD、dfを印刷cx_Oracle。次に、データフレームdfをテーブルTESTに挿入しようとします。この表TESTは、Oracleデータベースにすでに存在する空の表であり、OracleにDATE、YEAR、MONTH、SOURCE、DESTINATIONなどの列があります。すべてのデータ型はdfのデータと一致します。次のように私のコードは次のとおりです。

conn_str = u'account/[email protected]:1521/server' 
conn = cx_Oracle.connect(conn_str) 
cur = conn.cursor() 

# Write records stored in a DataFrame to a oracle database 
rows = [tuple(x) for x in df.values] 
print(rows) 
cur.executemany('''INSERT INTO TEST (DATE,YEAR,MONTH,SOURCE,DESTINATION) 
        VALUES (:1,:2,:3,:4,:5)''',rows) 

conn.commit() 
conn.close() 

エラーを示しています

DatabaseError: ORA-00928: missing SELECT keyword

問題を解決する方法は?あなたのお時間をありがとうございました!

答えて

1

DATEは、Oracle SQLの予約語です。あなたはそれを引用する必要があります(または列の名前を予約語ではないものに変更します)。 YEARも予約語なので、同じ扱いが必要です。

insert into test("DATE", ... 

このように引用すると、大文字と小文字は表定義で使用されているものと一致する必要があります。予約語とキーワードの

全リスト:Oracle (12c) SQL Reserved Words and Keywords

+0

のは、私の問題を解決し、ありがとう! –

関連する問題