SQL: convert backup file from copy format to insert format
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:
- Create a new postgres database on your local machine
Import your DB dump file into the new created database
psql -U <dbuser> <database> < dump.sql
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 ..."'
精彩评论