Export Postgres Database into CSV file

后端 未结 7 1953
醉梦人生
醉梦人生 2021-01-29 23:11

I want to export a Postgres database into a CSV file. Is this possible?

If it is possible, then how can I do this? I have seen that we can convert a particular table into

7条回答
  •  一生所求
    2021-01-29 23:32

    I made this pl/pgsql function to create one .csv file per table (excluding views, thanks to @tarikki):

    CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
    declare
       tables RECORD;
       statement TEXT;
    begin
    FOR tables IN 
       SELECT (table_schema || '.' || table_name) AS schema_table
       FROM information_schema.tables t INNER JOIN information_schema.schemata s 
       ON s.schema_name = t.table_schema 
       WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema')
       AND t.table_type NOT IN ('VIEW')
       ORDER BY schema_table
    LOOP
       statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||''' DELIMITER '';'' CSV HEADER';
       EXECUTE statement;
    END LOOP;
    return;  
    end;
    $$ LANGUAGE plpgsql;
    

    And I use it this way:

    SELECT db_to_csv('/home/user/dir');
    -- this will create one csv file per table, in /home/user/dir/
    

提交回复
热议问题