2017-12-13 4 views
1

複数のファイルからcsvデータをpythonでポストグルにダンプしようとしました。これで成功しました。しかし、特定の行データベースpostgresにコピーする前に既に存在します。私のコードを確認してください。Pythonを使用してcsvからpostgresにデータをコピーする前に行をチェックする方法

SQL_STATEMENT = """ 
    COPY %s FROM STDIN WITH 
     CSV 
     HEADER 
     DELIMITER AS ',' 
    """ 

def process_file(conn, table_name, file_object): 
    cursor = conn.cursor() 
    cursor. 
    cursor.copy_expert(sql=SQL_STATEMENT % table_name, file=file_object) 
    conn.commit() 
    cursor.close() 


connection = psycopg2.connect("dbname=dataflow user=postgres host=localhost password=root") 
try: 
    process_file(connection, 'mytable', f) 
finally: 
    connection.close() 

私にそれを行う方法を教えてください。

答えて

0

COPYは、フォーマット済みのデータをテーブルにロードするだけで、前処理はしません。あるものは何でも にデータを追加する(

ファイルからのコピーデータから
CREATE TABLE temp_t AS SELECT * FROM table_name WHERE false 
    ; 
    COPY temp_t FROM STDIN WITH 
     CSV 
     HEADER 
     DELIMITER AS ',' 
    ; 
    INSERT INTO table_name 
     SELECT * 
     FROM temp_t 
     EXCEPT 
     SELECT * 
     FROM table_name 
    ; 

https://www.postgresql.org/docs/current/static/sql-copy.html

COPYテーブルに:このように、あなたは一時テーブルにCSVファイルをコピーして、既存のスキップ、あなたのテーブルに行を挿入することができますすでに表)

+0

IAMにだけ使用してコピーしますが、データがtbale – sowmya

+0

そうにロードされた - ?しかし、あなたは、既存の行をスキップしたい... –

+0

yes..butはそれを行うことができませんでした。 – sowmya

関連する問題