データを 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 には、データを直接 INSERT スクリプトに変換する SQL コマンドはない。DDL には DBMS_METADATA.GET_DDL を、行の INSERT には SQLcl(SET SQLFORMAT INSERT)または 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.sqlpg_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.sqlmysqldump はデフォルトで INSERT 文を生成する。--no-create-info は CREATE TABLE を省き、データのみを出力する。--skip-extended-insert は各行を個別の INSERT にする(デフォルトでは多数の行を 1 つの文にまとめる)。
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.sqlSQL Server にはこのための組み込み T-SQL コマンドはない。最も一般的な方法は、SSMS の「Generate Scripts」ウィザードで Data only を選択すること。コマンドラインでは Microsoft の mssql-scripter ツールが --data-only で INSERT を生成する。
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.jsonSQL の 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.rdbSQL の 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 scriptSQL の INSERT は生成されない。Elasticsearch でのロードの単位は _bulk NDJSON。既存データを再ロード可能な形式で取り出すには elasticdump(type=data)を使用する。_search + PIT の出力は外部スクリプトで NDJSON に変換できる。