SQL: преобразовать файл резервной копии из формата копирования в формат вставки - PullRequest
1 голос
/ 13 мая 2010

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

Файл содержит записи вроде этого:

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

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

INSERT INTO tablename...

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

Ответы [ 4 ]

3 голосов
/ 13 мая 2010

Вы не можете преобразовать это в формат 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

2 голосов
/ 20 сентября 2013

Я не знаю способа или инструмента, который может конвертировать "COPY" в операторы "INSERT".

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

EDIT:

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

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

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

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
    
1 голос
/ 26 мая 2015

Вы можете попробовать синтаксис 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 ..."'

0 голосов
/ 16 января 2017

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

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

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

...