开发者

SQL: convert backup file from copy format to insert format

开发者 https://www.devze.com 2022-12-30 08:20 出处:网络
I have a PostgreSQL backup made with PHPPgadmin using Export > Copy (instead Copy > SQL whi开发者_如何学Goch is actually what I need).

I have a PostgreSQL backup made with PHPPgadmin using Export > Copy (instead Copy > SQL whi开发者_如何学Goch is actually what I need).

File contains entries like this:

COPY tablename(id, field) FROM stdin;
...

How to convert this file to SQL format?

INSERT INTO tablename...

I want to use Pgadmin to to import this file using execute SQL command.


I don't know a way or a tool which can convert "COPY" into "INSERT" statements.

But with the "pg_dump" command line tool you can create a DB dump file with "INSERT" instead of "COPY" statements. Simple use the "--column-inserts" argument (may be "--inserts" is also ok for you).

EDIT:

What you can do is:

  1. Create a new postgres database on your local machine
  2. Import your DB dump file into the new created database

    psql -U <dbuser> <database> < dump.sql
    
  3. And create a postgres dump with "--column-inserts" from that database

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
    


I've wrote a tool to convert copy-from dump to inserts dump :

https://github.com/freddez/pg-dump2insert

You can use it to load a dump in another database or search for specific deleted values for example.


You can't convert that to SQL format (at least not straightforwardly).

If you can't re export, then the simpler option is to bypass phpPgadmin, login in your server and run something like

cat [yourdump.sql]  | psql [your connections args]

If you don't have shell access to your server, you might try you upload the file (via SFTP or FTP) and load it thorugh phpPgAdmin with "COPY <table> FROM <path_to_file_on_server>". But if there are many tables, you must (I believe) split the file and do it one at a time.

http://phppgadmin.sourceforge.net/?page=faq


You can try COPY FROM PROGRAM syntax, available since PostgreSQL 9.3

For example: COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'

0

精彩评论

暂无评论...
验证码 换一张
取 消