Ich versuche, 2 Tabellen in Python beizutreten. (Unter Windows, Jupyter-Notebook.)Verwenden von pyodbc mit SQL-Join-Anweisung in Python
Tabelle 1 ist eine Excel-Datei, die mit Pandas eingelesen wurde.
Tabelle 2 ist eine große Tabelle in Oracle-Datenbank, die ich mit Pyodbc verbinden kann. Ich kann die gesamte Tabelle erfolgreich lesen, indem ich pyodbc wie folgt verwende, aber es dauert sehr lange.
sql = "SELECT * FROM ORACLE.table_2"
cnxn = odbc.connect(##########)
TABLE_2 = pd.read_sql(sql, cnxn)
So würde Ich mag eine innere Verknüpfung als Teil des Pyodbc Imports zu tun, so dass es schneller läuft und ich nur in den benötigten Aufzeichnungen ziehen. Tabelle 1 und Tabelle 2 teilen sich denselben eindeutigen Bezeichner/Primärschlüssel.
sql = "SELECT * FROM ORACLE.TABLE_1 INNER JOIN TABLE_2 ON ORACLE.TABLE1.ID=TABLE_2.ID"
cnxn = odbc.connect(##########)
TABLE_1_2_JOINED = pd.read_sql(sql, cnxn)
Aber das funktioniert nicht. Ich erhalte diesen Fehler:
DatabaseError: Execution failed on sql 'SELECT * FROM ORACLE.TABLE_1 INNER JOIN TABLE_2 ON ORACLE.TABLE1.ID=TABLE_2.ID': ('42S02', '[42S02] [Oracle][ODBC][Ora]ORA-00942: table or view does not exist\n (942) (SQLExecDirectW)')
Gibt es eine andere Möglichkeit, die ich tun kann? Es scheint sehr ineffizient zu sein, ganze Tabellen mit Millionen von Datensätzen zu importieren, wenn ich nur ein paar hundert verbinden muss. Vielen Dank.
Gibt es auch 'TABLE_1' in der Datenbank? – Ding
Nein, TABLE_1 existiert nur in Excel und ich habe es mit der Methode pandas pd.read_excel() importiert. – user2895991