Postgresqlに、行識別用のIDカラム(シリアル)を持ち、プライマリキーである既存のテーブルがあります。 ID列を含まないCSVをインポートするスクリプトがあります。プライマリキーを持たないCSVを既存のテーブルにインポート
file_list = glob.glob(path)
for f in file_list:
if os.stat(f).st_size != 0:
filename = os.path.basename(f)
arc_csv = arc_path + filename
data = pandas.read_csv(f, index_col = 0)
ind = data.apply(lambda x: not pandas.isnull(x.values).any(),axis=1)
data[ind].to_csv(arc_csv)
cursor.execute("COPY table FROM %s WITH CSV HEADER DELIMITER ','",(arc_csv,))
conn.commit()
os.remove(f)
else:
os.remove(f)
をスクリプトでCSVを存在しないため、それをテーブルのid(P_KEY)列が存在してCSVをインポートすることはできませんので、私は私が考えることができる2つのオプションがあります。ここで私が使用しているコードがあります: 1インポートの前にid列を削除し、インポート後に追加するコマンドを発行するか、 2 my cursor.executeコマンドでid列を増やす方法を見つけます。
私の質問は、どのアプローチが良いのか、それについてのよい方法であるか(もちろん誰かが良いアイデアを持っています)ありがとう。
はパンダがそこに何をやっていますか?あなたのCSVのサンプル行を投稿する – e4c5
既にPythonを使用しているので、csvデータの行を繰り返して個別に挿入するだけで、 'COPY FROM'の制限について心配する必要はありません。 – larsks