SQL: преобразовать файл резервной копии из формата копирования в формат вставки

У меня есть резервная копия PostgreSQL, сделанная с помощью PHPPgadmin с помощью Экспорт> Копировать (вместо Копировать> SQL, что мне и нужно).

Файл содержит такие записи:

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

Как преобразовать этот файл в формат SQL?

INSERT INTO tablename...

Я хочу использовать Pgadmin для импорта этого файла с помощью команды выполнения SQL.


person takeshin    schedule 13.05.2010    source источник
comment
Вы имеете в виду phpPgAdmin, нет? (Pgadmin — настольный клиент)   -  person leonbloy    schedule 13.05.2010


Ответы (4)


Вы не можете преобразовать это в формат SQL (по крайней мере, напрямую).

Если вы не можете повторно экспортировать, то проще обойти phpPgadmin, войти на свой сервер и запустить что-то вроде

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

Если у вас нет доступа к вашему серверу через оболочку, вы можете попробовать загрузить файл (через SFTP или FTP) и загрузить его через phpPgAdmin с помощью "COPY <table> FROM <path_to_file_on_server>". Но если таблиц много, вы должны (я полагаю) разделить файл и делать это по одной.

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

person leonbloy    schedule 13.05.2010

Я не знаю способа или инструмента, который может преобразовать «КОПИРОВАНИЕ» в операторы «ВСТАВИТЬ».

Но с помощью инструмента командной строки «pg_dump» вы можете создать файл дампа БД с помощью «INSERT» вместо операторов «COPY». Просто используйте аргумент "--column-inserts" (может быть, "--inserts" также подходит для вас).

ИЗМЕНИТЬ:

Что вы можете сделать, это:

  1. Создайте новую базу данных postgres на вашем локальном компьютере.
  2. Импортируйте файл дампа БД в новую созданную базу данных.

    psql -U <dbuser> <database> < dump.sql
    
  3. И создайте дамп postgres с "--column-inserts" из этой базы данных

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
    
person Steffen    schedule 20.09.2013

Вы можете попробовать синтаксис COPY FROM PROGRAM, доступный начиная с PostgreSQL 9.3.

Например: COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'

person Dmitry Ziyatdinov    schedule 26.05.2015

Я написал инструмент для преобразования копирования из дампа в дамп вставки:

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

Вы можете использовать его, например, для загрузки дампа в другую базу данных или поиска определенных удаленных значений.

person fredz    schedule 16.01.2017