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

Выгрузить данные (CSV / в файл)

Oracle

-- CSV with SQL*Plus (spool)
SET MARKUP CSV ON
SPOOL customer.csv
SELECT id, name, email FROM customer;
SPOOL OFF

-- Logical export with Data Pump (from the shell)
expdp app_user/password tables=customer directory=dir_dmp dumpfile=customer.dmp

Для CSV используйте SQL*Plus SET MARKUP CSV ON + SPOOL (12.2+). Для переноса схем/таблиц Data Pump (expdp) создаёт бинарный .dmp, который импортируется в другую базу Oracle через impdp.

PostgreSQL

-- Server side
COPY (SELECT id, name, email FROM customer) TO '/data/customer.csv' WITH (FORMAT csv, HEADER true);

-- Client side (psql)
\copy (SELECT id, name, email FROM customer) TO 'customer.csv' WITH (FORMAT csv, HEADER true)

COPY ... TO записывает результат запроса в файл (на сервере, требует привилегий); psql \copy пишет в файл клиента. HEADER true добавляет строку заголовка.

MySQL

-- To a file on the server
SELECT id, name, email FROM customer
INTO OUTFILE '/data/customer.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

-- To the client: mysql -e ... > file (tab-separated)
-- mysql -e "SELECT * FROM customer" shop > customer.tsv

SELECT ... INTO OUTFILE создаёт файл на сервере (требуются путь secure_file_priv и привилегия FILE; перезаписывать не может). Для вывода на стороне клиента перенаправляйте через mysql -e.

SQL Server

-- Export with bcp (from the shell)
bcp "SELECT id, name, email FROM shop.dbo.customer" queryout customer.csv -c -t, -S server -T

-- or the whole table
bcp shop.dbo.customer out customer.dat -n -S server -T

bcp out/queryout записывает данные в файл: -c — символьный режим, -t, — разделитель полей, -n — нативный бинарный формат. Для результата запроса используйте queryout. Также можно использовать «Results to File» в SSMS.

MongoDB

# Export CSV (fields must be specified)
mongoexport --db=shop --collection=customer --type=csv --fields=id,name,email --out=customer.csv

# As JSON
mongoexport --db=shop --collection=customer --out=customer.json

mongoexport создаёт CSV/JSON; для CSV столбцы нужно явно указать через --fields. Для фильтрации используйте --query. Для полного бинарного бэкапа предпочтителен mongodump.

Redis

# Scan keys (SCAN instead of KEYS in production)
redis-cli --scan --pattern 'customer:*' > keys.txt

# For a full data backup, download an RDB snapshot to the client side (non-blocking)
redis-cli --rdb ./dump.rdb

Встроенной структурированной выгрузки в CSV нет. Для списка ключей используйте --scan (неблокирующий), для полных данных — файл RDB: redis-cli --rdb скачивает в локальный файл снимок, сгенерированный в фоне на сервере; если файл нужен на сервере, используйте BGSAVE. SAVE блокирует основной поток; не используйте в продакшене. Чтобы получить и значения, читайте результат сканирования в цикле.

Elasticsearch

# Export with elasticdump
elasticdump --input=http://localhost:9200/customer --output=customer.json --type=data

# For large data, paged reads with scroll / point-in-time
GET customer/_search?scroll=1m
{ "size": 1000, "query": { "match_all": {} } }

Прямой выгрузки в CSV нет. Чтобы получить все данные, используйте elasticdump или постранично читайте _search через scroll/PIT (point-in-time). Для преобразования в CSV нужен вывод csv в Logstash или внешний инструмент.

Открыть в DBAtlas →