ここでは、スナップインのPostgreSQLデータベースにデータのトンをアップロードする方法です
必要条件
インストール
psycopg2 Pythonライブラリは使用します.次のコマンドを実行してパッケージをインストールします.
$ pip install psycopg2
輸入品
テキストエディタを起動し、これらのインポートをPythonファイルに追加します.CSVファイルからデータをインポートするためにCSVパッケージを使用します.
import psycopg2.sql as psql
import psycopg2.extras
import psycopg2
import csv
好奇心旺盛ならpsycopg2.sql
Pythonを使用してSQLクエリを生成するSQL関連ヘルパーを含みますpsycopg2.extras
このチュートリアルの最も重要な方法を含みますexecute_values() - インポートクエリを最終的に実行するために使用します.3 .データベース接続オブジェクトとカーソルを作成する
これらのオブジェクトはsingletons これはデータベースへの接続を保持します.
DB = psycopg2.connect(
dsn=None,
dbname='your_database',
user='postgres',
host='localhost',
password='password'
)
db_cursor = DB.cursor
4 . CSVファイルからデータを読み込みます
with open('your_csv_file.csv') as f:
reader = csv.reader(f, delimiter=',')
allrows = []
for line in reader:
allrows.append({ "column1": line[0], "column2": line[1] })
line
forループはCSV行のすべての値のリストです.line[0]
最初のフィールドになります.line[1]
二つ目など.line
/CSVの行の上にループされ、キーがフィールド/列の名前と値がどこにある辞書を作成します.値.allrows
変数は、作成されたすべての辞書(それぞれが挿入される行を表す)のリストを格納します.再利用可能なSQLの生成
この手順では、次の関数を使用してSQLを生成します
def create_sql(table_name, column_names):
query = psql.SQL("INSERT INTO {} ({}) VALUES %s").format(
psql.Identifier(table_name),
psql.SQL(', ').join(map(psql.Identifier, column_names))
)
query2 = psql.SQL("({})").format(
psql.SQL(', ').join(map(psql.Placeholder, column_names)),
)
return query.as_string(DB), query2.as_string(DB)
query2
動的に生成されたSQLの一部を表しますVALUES
典型的な挿入SQLクエリで.insert_sql, template_sql = create_sql('your_table', ['column1', 'column2'])
私はあなたに別の値がどのように見えるかを調べるために印刷文またはブレークポイントを加えるのを奨励します.以下は、私が印刷したことがわかりますallrows
, insert_sql
and template_sql
ダミーデータがどのように挿入されるかを見るには6 .クエリの実行
psycopg2.extras.execute_values(db_cusror, insert_sql, allrows, template_sql)
変更がまだコミットされていないことに注意してください.これはエラーをテストする良いチェックポイントです(つまり、この時点までエラーが発生しない場合は、最後のステップを実行するのが良いということです).7 .変更をコミットする🎉
DB.commit()
おめでとう!これで、このスクリプトを使用してデータを大量にインポートすることができます🪄共有したい部分や考えについての質問がある場合は、以下のコメントを参照ください.
Reference
この問題について(ここでは、スナップインのPostgreSQLデータベースにデータのトンをアップロードする方法です), 我々は、より多くの情報をここで見つけました https://dev.to/glowinginthedark/heres-how-you-can-upload-tons-of-data-to-a-postgresql-database-in-a-snap-3n94テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol