DBAtlas · Atlas de operações de banco de dados

Exportar dados (CSV / para arquivo)

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

Para CSV, use SET MARKUP CSV ON + SPOOL do SQL*Plus (12.2+). Para mover schemas/tabelas, o Data Pump (expdp) gera um .dmp binário que é importado em outro banco Oracle com 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 grava o resultado de uma consulta em um arquivo (no lado do servidor, exige privilégios); o \copy do psql grava em um arquivo do cliente. HEADER true adiciona uma linha de cabeçalho.

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 cria o arquivo no servidor (exige o caminho de secure_file_priv e o privilégio FILE; não pode sobrescrever). Para saída no lado do cliente, redirecione com 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 grava dados em um arquivo: -c modo caractere, -t, terminador de campo, -n formato binário nativo. Use queryout para o resultado de uma consulta. 'Results to File' no SSMS também é uma opção.

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 gera CSV/JSON; para CSV, as colunas devem ser informadas explicitamente com --fields. Use --query para filtrar. Para um backup binário completo, prefere-se o 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

Não há exportação estruturada para CSV embutida. Use --scan (não bloqueante) para uma lista de chaves e um arquivo RDB para os dados completos: redis-cli --rdb baixa para um arquivo local um snapshot gerado em segundo plano no servidor; se quiser o arquivo no servidor, use BGSAVE. SAVE bloqueia a thread principal; não use em produção. Para obter também os valores, leia o resultado do scan em um loop.

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": {} } }

Não há exportação direta para CSV. Para obter todos os dados, use elasticdump ou pagine o _search com scroll/PIT (point-in-time). A conversão para CSV exige o output csv do Logstash ou uma ferramenta externa.

Abrir no DBAtlas →