2017-11-29 6 views
0

Ich bin ein neuer Orakel Lerner. Ich versuche, einen Pandas-Datenrahmen in eine Oracle-Tabelle einzufügen. Ich habe online recherchiert, der Code selbst (https://www.snip2code.com/Snippet/704409/Insert-pandas-dataframe-to-Oracle-databa/) sollte sehr einfach sein, aber ich weiß nicht, warum mein Code nicht funktioniert.DatabaseError: ORA-00928: fehlt SELECT Schlüsselwort

ich den Pandas Datenrahmen von meiner lokalen Datei gelesen habe:

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") 

Jetzt df drucken, der Datenrahmen df so sein shold:

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  

Dann erstellen Verbindung I mit der Datenbank unter Verwendung von cx_Oracle. Als nächstes versuche ich den Datenrahmen df in die Tabelle TEST einzufügen. Diese Tabelle TEST ist eine leere Tabelle, die bereits in der Oracle-Datenbank vorhanden ist. Sie enthält Spalten wie DATE, YEAR, MONTH, SOURCE, DESTINATION in Oracle. Der gesamte Datentyp entspricht den Daten von df. Mein Code ist wie folgt:

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() 

Es zeigt Fehler:

DatabaseError: ORA-00928: missing SELECT keyword

Wie das Problem zu lösen? Vielen Dank für Ihre Zeit!

Antwort

1

DATE ist ein reserviertes Wort in Oracle SQL. Sie müssen es angeben (oder benennen Sie Ihre Spalte in etwas, das kein reserviertes Wort ist). YEAR ist auch ein reserviertes Wort, benötigt die gleiche Behandlung.

insert into test("DATE", ... 

Bei dieser Syntax muss der Fall mit dem in der Tabellendefinition verwendeten übereinstimmen.

Liste der reservierten Wörter und Schlüsselwörter: Oracle (12c) SQL Reserved Words and Keywords

+0

, das ist mein Problem löst, Danke !!! –

Verwandte Themen