簡體   English   中英

使用python將數據從csv復制到postgres之前,如何檢查行已存在

[英]How to check a row already exists before copying the data from csv to postgres using python

我嘗試使用python將多個文件中的csv數據轉儲到postgres中,我成功完成了,但是我想在復制到數據庫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()

請建議我該怎么做。

COPY只是將格式正確的數據加載到表中-無需預處理。 因此,您可以將csv復制到臨時表,然后跳過現有表將行插入到表中:

   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 FROM將數據從文件復制到表(將數據追加到表中已有的任何內容)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM