J'essaie de joindre 2 tables en Python. (À l'aide de Windows, carnet jupyter.)Utilisation de pyodbc avec l'instruction de jointure SQL en Python
Le tableau 1 est un fichier Excel lu en utilisant des pandas.
TABLE_1= pd.read_excel('my_file.xlsx')
Le tableau 2 est une grande table dans la base de données Oracle à laquelle je peux me connecter en utilisant pyodbc. Je peux lire toute la table avec succès en utilisant pyodbc comme ça, mais cela prend beaucoup de temps.
sql = "SELECT * FROM ORACLE.table_2"
cnxn = odbc.connect(##########)
TABLE_2 = pd.read_sql(sql, cnxn)
Je voudrais faire une jointure interne dans le cadre de l'importation de pyodbc, de sorte qu'il est plus rapide et je ne tirer dans les dossiers nécessaires. Le Tableau 1 et le Tableau 2 partagent le même identifiant unique/clé primaire.
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)
Mais cela ne fonctionne pas. Je reçois cette erreur:
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)')
Y at-il une autre façon que je peux le faire? Il semble très inefficace d'avoir à importer une table entière avec des millions d'enregistrements alors que je n'ai besoin que de quelques centaines. Je vous remercie.
Est-ce que 'TABLE_1' existe aussi dans la base de données? – Ding
Non, TABLE_1 n'existe que dans Excel et je l'ai importé en utilisant la méthode pandas pd.read_excel(). – user2895991