DBAtlas · Atlas für Datenbankbetrieb

Daten exportieren (CSV / in Datei)

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

Für CSV SQL*Plus SET MARKUP CSV ON + SPOOL verwenden (12.2+). Zum Verschieben von Schemas/Tabellen erzeugt Data Pump (expdp) eine binäre .dmp, die mit impdp in eine andere Oracle-Datenbank importiert wird.

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 schreibt ein Abfrageergebnis in eine Datei (serverseitig, erfordert Berechtigungen); psql \copy schreibt in eine Client-Datei. HEADER true fügt eine Kopfzeile hinzu.

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 legt die Datei auf dem Server an (erfordert den secure_file_priv-Pfad und die FILE-Berechtigung; kann nicht überschreiben). Für clientseitige Ausgabe mit mysql -e umleiten.

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 schreibt Daten in eine Datei: -c Zeichenmodus, -t, Feldtrennzeichen, -n natives Binärformat. Für ein Abfrageergebnis queryout verwenden. „Results to File“ in SSMS ist ebenfalls eine Option.

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 erzeugt CSV/JSON; für CSV müssen die Spalten explizit mit --fields angegeben werden. Zum Filtern --query verwenden. Für ein vollständiges Binär-Backup ist mongodump vorzuziehen.

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

Ein strukturierter CSV-Export ist nicht eingebaut. Für eine Key-Liste --scan (nicht blockierend) und für die vollständigen Daten eine RDB-Datei verwenden: redis-cli --rdb lädt einen auf dem Server im Hintergrund erzeugten Snapshot in eine lokale Datei herunter; soll die Datei auf dem Server liegen, BGSAVE verwenden. SAVE blockiert den Main Thread; nicht in Produktion verwenden. Um auch die Werte zu erhalten, das Scan-Ergebnis in einer Schleife auslesen.

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

Einen direkten CSV-Export gibt es nicht. Um alle Daten zu erhalten, elasticdump verwenden oder _search mit scroll/PIT (Point-in-Time) seitenweise durchlaufen. Die Umwandlung in CSV erfordert den csv-Output von Logstash oder ein externes Tool.

In DBAtlas öffnen →