私はPythonを使用してPostgreSQLにCSVファイルをインポートしようとしています。私はPythonに、重複を含んでいないCSVファイル内のデータのレコード/行をインポートするように指示したい(最初の一意のビルダーレコードのみ)。私は、CSVファイルで重複を見つけるために使用しているコードを添付しています。私はプログラミングに慣れていないので、私の未熟さを赦してください。PostgreSQLに固有のレコードのみをインポートします
import csv
import psycopg2
database = psycopg2.connect (database = "***", user="***")
cursor = database.cursor()
delete = """Drop table if exists "Real".Noduplicates"""
print (delete)
mydata = cursor.execute(delete)
cursor.execute("""Create Table "Real".Noduplicates
(UserName varchar(55),
LastUpdate timestamp,
Week date,
Builder varchar(55),
Traffic integer
);""")
print "Table created successfully"
csv_data = csv.reader(file('SampleData2.csv'))
already_seen = set()
next(csv_data)
for row in csv_data:
builder = row[3]
if builder in already_seen:
print('{} is a duplicate builder'.format(builder))
else:
print('{} is a new builder'.format(builder))
already_seen.add(builder)
for row in csv_data:
cursor.execute("""INSERT INTO "Real".Noduplicates (UserName, LastUpdate, Week, Builder, Traffic)"""\
"""VALUES (%s,%s,%s,%s,%s)""",
row)
cursor.close()
database.commit()
database.close()
print "CSV Imported"
を私はあなたのテーブルビルダーで変化するであろう
ベター一意であること。つまり、データベースはこのキーへの複製をすべて拒否します。その後、データをループして、すべてのレコードを挿入し、失敗した場合は例外をキャッチしてください。データベースにあなたのための仕事をさせてください。 – Hannu
@ハヌー:そうです。また、新しいUPSERT(INSERT ... ON CONFLICT ...)では、例外もありません。 –