一部のソース データ ソースから Postgres データベースにデータをロードする必要があります。このタスクを実行するには、まずデータを一時 CSV ファイルに書き込み、次に COPY FROM クエリを使用して CSV ファイルから Postgres データベースにデータを読み込みます。これはすべて Python で行います。
コードは次のようになります。
table_name = 'products'
temp_file = "'C:\\Users\\username\\tempfile.csv'"
db_conn = psycopg2.connect(host, port, user, password, database)
cursor = db_conn.cursor()
query = """COPY """ + table_name + """ FROM """ + temp_file + " WITH NULL AS ''; """
cursor.execute(query)
中間ファイルへの書き込みのステップを避けたい。代わりに、Python オブジェクトに書き込み、COPY FROM ファイル メソッドを使用してデータを postgres データベースにロードしたいと考えています。
StringIO オブジェクトから postgres データベースにデータをコピーする psycopg2 の copy_from メソッドを使用するこの手法を認識しています。ただし、ある理由で psycopg2 を使用できないため、COPY FROM タスクをライブラリに依存させたくありません。他のpostgresドライバーでも実行できるPostgresクエリにしたい。
中間ファイルに書き込まずにこれを行うより良い方法を教えてください。