How Postgresql COPY TO STDIN With CSV do on conflic do update?

前端 未结 3 997
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-13 14:02

I want to do

 \" on conflict (time) do update set name , description \"

but I have no idea when I use stdin with csv , I don\'t know what n

相关标签:
3条回答
  • 2021-01-13 14:06

    In this SO post, there are two answers that -combined together- provide a nice solution for successfully using ON CONFLICT. The example below, uses ON CONFLICT DO NOTHING;:

    CREATE TEMP TABLE tmp_table 
    (LIKE label INCLUDING DEFAULTS)
    ON COMMIT DROP;
    
    COPY tmp_table FROM 'full/file/name/here';
    
    INSERT INTO main_table
    SELECT *
    FROM tmp_table
    ON CONFLICT DO NOTHING;
    
    0 讨论(0)
  • 2021-01-13 14:17

    Thanks for every master's solution.

    this is my solution.

    sql = """
    CREATE TABLE temp_h (
        time ,
        name,
        description
    );
    COPY temp_h FROM STDIN With CSV;
    
    INSERT INTO table_a(time, name, description)
    SELECT *
    FROM temp_h ON conflict (time) 
    DO update set name=EXCLUDED.name, description=EXCLUDED.description;
    
    DROP TABLE temp_h;
    """
    
    0 讨论(0)
  • 2021-01-13 14:21

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

    there is no copy ... on conflict do statement in postgres

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

    only insert ... on conflict do

    0 讨论(0)
提交回复
热议问题