Using pg_dump to only get insert statements from one table within database

前端 未结 4 1640
猫巷女王i
猫巷女王i 2020-12-22 17:19

I\'m looking for a way to get all rows as INSERT statements from one specific table within a database using pg_dump in PostgreSQL.

E.g., I

相关标签:
4条回答
  • 2020-12-22 18:05

    Put into a script I like something like that:

    #!/bin/bash
    set -o xtrace # remove me after debug
    TABLE=charge_unit
    DB_NAME=prod_sit_entities_db
    
    BASE_DIR=/var/backups/someDir
    LOCATION="${BASE_DIR}/myApp_$(date +%Y%m%d_%H%M%S)"
    FNAME="${LOCATION}_${DB_NAME}_${TABLE}.sql"
    
    # Create backups directory if not exists
    if [[ ! -e $BASE_DIR ]];then
    |       mkdir $BASE_DIR
    |       chown -R postgres:postgres $BASE_DIR
    fi
    
    sudo -H -u postgres pg_dump --column-inserts --data-only --table=$TABLE $DB_NAME > $FNAME
    sudo gzip $FNAME
    
    0 讨论(0)
  • 2020-12-22 18:11

    just in case you are using a remote access and want to dump all database data, you can use:

    pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump

    it will create a dump with all database data and use

    pg_restore -a -h your_host -U your_user -W -Fc your_database < DATA.dump

    to insert the same data in your data base considering you have the same structure

    0 讨论(0)
  • 2020-12-22 18:14

    if version < 8.4.0

    pg_dump -D -t <table> <database>
    

    Add -a before the -t if you only want the INSERTs, without the CREATE TABLE etc to set up the table in the first place.

    version >= 8.4.0

    pg_dump --column-inserts --data-only --table=<table> <database>
    
    0 讨论(0)
  • 2020-12-22 18:19

    If you want to DUMP your inserts into an .sql file:

    1. cd to the location which you want to .sql file to be located
    2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql

    Note the > my_dump.sql command. This will put everything into a sql file named my_dump

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