У меня есть схема базы данных с именем: nyummy
и таблица с именем cimory
:
create table nyummy.cimory (
id numeric(10,0) not null,
name character varying(60) not null,
city character varying(50) not null,
CONSTRAINT cimory_pkey PRIMARY KEY (id)
);
Я хочу экспортировать cimory
данные таблицы в виде файла сценария вставки SQL. Тем не менее, я хочу экспортировать записи / данные только в том случае, если город равен «Токио» (предположим, что все данные города строчные).
Как это сделать?
Не имеет значения, находится ли решение в бесплатных инструментах с графическим интерфейсом или в командной строке (хотя решение для инструментов с графическим интерфейсом лучше). Я пробовал pgAdmin III, но не могу найти вариант сделать это.
Ответы:
Создайте таблицу с набором, который вы хотите экспортировать, а затем используйте утилиту командной строки pg_dump для экспорта в файл:
--column-inserts
сбросит как команды вставки с именами столбцов.--data-only
не сбрасывать схемуКак указано ниже, создание представления вместо таблицы будет исключать создание таблицы всякий раз, когда необходим новый экспорт.
источник
create view export_view...
, поскольку представление будет оставаться актуальным с изменениями в базовой таблице. В документах говорят ,--table=table: Dump only tables (or **views**...
так что я имел некоторую надежду на то, что это будет работать, но демпинг вида , к сожалению , не дает никаких данных. : Ppg_dump --table=my_schema.my_view --data-only --inserts my_db > data.sql
версию 9.5.3, и моеcreate
утверждение было таким же, как ваше, за исключениемcreate view...
. Все, что я получаю в выводе, это обычные комментарии иSET
заявления pg_dump . Не уверен, где я иду не так.Для экспорта данных только использование
COPY
.Вы получаете файл с одной строкой таблицы на строку в виде простого текста (не
INSERT
команд), он меньше и быстрее:Импортируйте то же самое в другую таблицу с той же структурой где угодно с:
COPY
пишет и читает файлы, локальные для сервера , в отличие от клиентских программ, таких какpg_dump
илиpsql
которые читают и записывают файлы, локальные для клиента . Если оба работают на одном компьютере, это не имеет большого значения, но это важно для удаленных подключений.Существует также
\copy
команда psql, которая:источник
insert
командах, не так ли?STDIN
иSTDOUT
может использоваться вместо пути к файлу, что полезно для экспорта небольших данных.--column-inserts
флаге, pg_dump используетCOPY
из STDIN для каждой из таблиц в коде SQL он генерирует.Это простой и быстрый способ экспортировать таблицу в скрипт с помощью pgAdmin вручную без дополнительных установок :
Этот метод также работает с техникой создания export_table, как продемонстрировано в ответе @Clodoaldo Neto.
источник
SQL Workbench имеет такую функцию.
После выполнения запроса щелкните правой кнопкой мыши результаты запроса и выберите «Копировать данные как SQL> Вставка SQL»
источник
Для моего варианта использования я смог просто передать данные в grep.
источник
Я попытался написать процедуру, которая делает это, основываясь на кодах @PhilHibbs, по-другому. Пожалуйста, посмотрите и проверьте.
А потом :
протестировано на моем postgres 9.1, с таблицей со смешанным типом данных поля (text, double, int, отметка времени без часового пояса и т. д.)
Вот почему необходим CAST в текстовом виде. Мой тестовый запуск правильно для примерно 9 миллионов строк, похоже, что он провалился за 18 минут.
PS: я нашел эквивалент для MySQL на веб-сайте.
источник
Вы можете просмотреть таблицу с указанными записями, а затем сбросить файл sql.
источник
Я просто выполнил быструю процедуру, чтобы сделать это. Это работает только для одной строки, поэтому я создаю временное представление, которое просто выбирает нужную строку, а затем заменяю pg_temp.temp_view на фактическую таблицу, в которую я хочу вставить.
Вызывается так:
Я не проверял это против атак с использованием инъекций, пожалуйста, дайте мне знать, если для этого недостаточно вызова quote_literal.
Также это работает только для столбцов, которые можно просто привести к :: text и обратно.
Также это для Greenplum, но я не могу придумать причину, по которой он не будет работать на Postgres, CMIIW.
источник
вы пробовали в pgadmin выполнить запрос с
" EXECUTE QUERY WRITE RESULT TO FILE "
опциейего только экспорт данных, иначе попробуйте как
Опция -t используется для ==> дампить только таблицы (или представления или последовательности), соответствующие таблице, см.
источник
create view
заявление