восстановить дамп одной таблицы из файла sql

У меня есть полный дамп файла sql, например dump_full.sql размера 1.3GB

И у него есть несколько таблиц, таких как

dancing_core_spice
dancing_sea_beast

forde_clear_one
forde_super_now

Теперь мне нужно восстановить/извлечь/сбросить only data этих таблиц из dump_full.sqlфайла.

psql -U postgres --table=dancing_core_spice dump_full.sql > dancing_core_spice.sql

я попробовал вышеуказанную команду, но она не работает

Так может кто-нибудь, пожалуйста, дайте мне знать, как получить дамп только одной таблицы из файла sql (полный дамп)


person Shiva Krishna Bavandla    schedule 28.01.2014    source источник


Ответы (1)


Для операций такого типа файл дампа должен быть в пользовательском формате postgresql, созданном с помощью pg_dump:

pg_dump -Fc

Затем вы можете восстановить одну таблицу с помощью pg_restore.

pg_restore --table=dancing_core_spice dump_full.sql > dancing_core_spice.sql

Этот вопрос содержит советы по обработке ваш реальный случай:

  • Извлеките код sql из файла. С редактором, сценарием или чем-то еще
  • Восстановите дамп во временную базу данных и снова создайте дамп с помощью pg_dump.
person Francisco Puga    schedule 28.01.2014
comment
Вы не можете использовать pg_restore с файлом SQL в качестве входных данных. - person a_horse_with_no_name; 28.01.2014
comment
Это дает мне pg_restore: [archiver] input file appears to be a text format dump. Please use psql. - person Shiva Krishna Bavandla; 28.01.2014
comment
Мы можем восстановить удаленную таблицу из скрипта в три шага. Сначала извлеките структуру таблицы из дампа sql, затем извлеките данные из файла sql. Третий шаг — запустить sql, чтобы создать таблицу и восстановить файлы . a) sed -n '/CREATE TABLE имя_таблицы/,/);/p' /tmp/dump.sql ›/tmp/ct.sql b)sed -n '/COPY имя_таблицы/,/\\./p'/ tmp/dump.sql › /tmp/cv.sql c)psql -U postgres ‹имя БД› ›\i /tmp/ct.sql ›\i /tmp/cv.sql ›\q - person sramay; 24.06.2015
comment
Спасибо за совет, sramay. Не стесняйтесь открывать новый ответ. Но учтите, что иногда вместо COPY дамп выполняется с помощью операторов INSERT или даже одного оператора INSERT на строку. - person Francisco Puga; 24.06.2015