DBAtlas · Атлас эксплуатации баз данных

Сгенерировать данные в виде скрипта INSERT

Oracle

-- DBMS_METADATA for object DDL
SELECT DBMS_METADATA.GET_DDL('TABLE','CUSTOMER') FROM dual;

-- Generating row data as INSERTs is not built in;
-- use SQL Developer 'Export > Insert' or SQLcl 'SET SQLFORMAT INSERT':
-- SET SQLFORMAT INSERT
-- SELECT * FROM customer;

В Oracle нет SQL-команды, напрямую превращающей данные в готовый скрипт INSERT. Для DDL используйте DBMS_METADATA.GET_DDL; для INSERT строк — SQLcl (SET SQLFORMAT INSERT) или мастер Export в SQL Developer.

PostgreSQL

-- Data only, as INSERT statements
pg_dump --data-only --inserts --table=customer shop > insert.sql

-- With column names (more robust to schema differences)
pg_dump --data-only --column-inserts --table=customer shop > insert.sql

pg_dump --inserts записывает каждую строку отдельным INSERT; --column-inserts добавляет и имена столбцов (устойчиво к различиям схем). По умолчанию (без флага) создаётся формат COPY, который загружается намного быстрее.

MySQL

-- Data only (INSERTs), without the table definition
mysqldump --no-create-info shop customer > insert.sql

-- One INSERT per row (more readable)
mysqldump --no-create-info --skip-extended-insert shop customer > insert.sql

mysqldump по умолчанию создаёт операторы INSERT; --no-create-info пропускает CREATE TABLE и выводит только данные. --skip-extended-insert делает каждую строку отдельным INSERT (по умолчанию много строк объединяется в один оператор).

SQL Server

-- SSMS: right-click > Tasks > Generate Scripts >
--   Advanced > 'Types of data to script' = Data only (or Schema and data)

-- Command-line alternative (sqlpackage / mssql-scripter tool)
-- mssql-scripter -S server -d shop -t customer --data-only > insert.sql

В SQL Server нет встроенной команды T-SQL для этого. Самый распространённый способ — выбрать Data only в мастере «Generate Scripts» в SSMS. В командной строке утилита Microsoft mssql-scripter генерирует INSERT с --data-only.

MongoDB

# Produces a binary/BSON backup instead of INSERT SQL
mongodump --db=shop --collection=customer --out=./backup

# As JSON text (can be adapted to insertMany)
mongoexport --db=shop --collection=customer --jsonArray --out=customer.json

Понятия SQL INSERT нет. Для переносимого бэкапа используйте mongodump (BSON, восстанавливается через mongorestore). Для insertMany, встраиваемого в код, можно использовать вывод mongoexport --jsonArray.

Redis

# Portable serialization of a single key
DUMP customer:1
# The output is restored with RESTORE:
# RESTORE customer:1 0 "<dump-data>"

# RDB snapshot for all data
redis-cli --rdb dump.rdb

Скрипт SQL INSERT не создаётся. Используйте сериализацию DUMP + RESTORE для каждого ключа и файл RDB (--rdb) для всех данных. Если нужен список команд, итерируйте через SCAN и стройте соответствующие команды SET/HSET для каждого типа.

Elasticsearch

# The INSERT equivalent is _bulk NDJSON; produce it with elasticdump
elasticdump --input=http://localhost:9200/customer --output=customer_bulk.json --type=data

# Manual: converting a _search result to _bulk NDJSON requires an external script

SQL INSERT не создаётся; в Elasticsearch единица загрузки — NDJSON для _bulk. Чтобы извлечь существующие данные в пригодном для повторной загрузки виде, используйте elasticdump (type=data); вывод _search + PIT можно преобразовать в NDJSON внешним скриптом.

Открыть в DBAtlas →