Benutzer-Werkzeuge

Webseiten-Werkzeuge


datenbank:postgresql_dump

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
datenbank:postgresql_dump [2026-05-15 16:52:24] manfreddatenbank:postgresql_dump [2026-05-18 10:39:00] (aktuell) – [ab PostgreSQL Version 15] manfred
Zeile 8: Zeile 8:
 <code bash Nur CREATE TABLE Statements (ohne Daten)> <code bash Nur CREATE TABLE Statements (ohne Daten)>
 > pg_dump --schema-only \ > pg_dump --schema-only \
-  -t table1 -t table2 -t table3 -t table4 -t table5 \+  -t tabelle1 -t tabelle2 -t tabelle3 -t tabelle4 -t tabelle5 \
   -U postgres -d database_name \   -U postgres -d database_name \
-  -f schema_5_tables.sql+  -f schema_5_tabelles.sql
 </code> </code>
  
 <code bash Nur CREATE TABLE (ohne Indexe, Constraints, Views)> <code bash Nur CREATE TABLE (ohne Indexe, Constraints, Views)>
 > pg_dump --schema-only --section=pre-data \ > pg_dump --schema-only --section=pre-data \
-  -t table1 -t table2 -t table3 -t table4 -t table5 \+  -t tabelle1 -t tabelle2 -t tabelle3 -t tabelle4 -t tabelle5 \
   -U postgres -d database_name \   -U postgres -d database_name \
-  -f create_5_tables_only.sql+  -f create_5_tabelles_only.sql
 </code> </code>
  
 <code bash Ohne Owner/Privilegien (portabler für andere DB)> <code bash Ohne Owner/Privilegien (portabler für andere DB)>
 > pg_dump --schema-only --no-owner --no-privileges \ > pg_dump --schema-only --no-owner --no-privileges \
-  -t table1 -t table2 -t table3 -t table4 -t table5 \+  -t tabelle1 -t tabelle2 -t tabelle3 -t tabelle4 -t tabelle5 \
   -U postgres -d database_name \   -U postgres -d database_name \
-  -f create_5_tables_no_owner.sql+  -f create_5_tabelles_no_owner.sql
 </code> </code>
  
Zeile 31: Zeile 31:
  
 <code bash Schema in Ziel-DB einspielen> <code bash Schema in Ziel-DB einspielen>
-> psql -U "$USER" -d "$TARGET_DB" -f schema_5_tables.sql+> psql -U "$USER" -d "$TARGET_DB" -f schema_5_tabelles.sql
 </code> </code>
  
Zeile 42: Zeile 42:
  
 <code bash Daten aus DB dumpen> <code bash Daten aus DB dumpen>
-for TAB in table1 table2 table3 table4 table5 +echo "COPY tabelle TO 'export_tabelle.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER true)" | sudo -u postgres psql -d database_name
-do +
- echo "COPY ${TAB} TO 'export_${TAB}.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER true)" | sudo -u postgres psql -d database_name +
-done+
 </code> </code>
  
Zeile 51: Zeile 48:
 <code text zu beachten bei COPY> <code text zu beachten bei COPY>
 Ohne Header (mit -t) Ohne Header (mit -t)
-  COPY table FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t'); +  COPY tabelle FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t'); 
-  COPY table FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER false);+  COPY tabelle FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER false);
  
 Mit Header (ohne -t) - Wenn du nur Spaltennamen überspringen willst Mit Header (ohne -t) - Wenn du nur Spaltennamen überspringen willst
-  COPY table FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER); +  COPY tabelle FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER); 
-  COPY table FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER true);+  COPY tabelle FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER true);
  
 Mit Header (ohne -t) - Wenn du validieren willst, dass Header-Namen passen Mit Header (ohne -t) - Wenn du validieren willst, dass Header-Namen passen
-  COPY table FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH);+  COPY tabelle FROM 'file.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH);
 </code> </code>
  
  
 <code bash Daten in DB einspielen> <code bash Daten in DB einspielen>
-for TAB in table1 table2 table3 table4 table5 +echo "COPY tabelle FROM 'export_${TAB}.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH);" | sudo -u postgres psql -d database_name 
-do +</code> 
- echo "COPY ${TAB} FROM 'export_${TAB}.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH true);" | sudo -u postgres psql -d database_name + 
-done+<code bash Daten direkt von einem, in ein anderes DBMS übertragen> 
 +ssh dbuser@hostname "echo \"SELECT * FROM tabelle;\" | psql -d testdb -U dbuser -A -F $'\t'" | psql -d testdb -U dbuser -c "COPY tabelle FROM STDIN WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH);" 
 +oder 
 +ssh dbuser@hostname "echo \"SELECT * FROM tabelle;\" | psql -d testdb -U dbuser -A -F $'\t'" | psql -d testdb -U dbuser -c "COPY tabelle FROM STDIN WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH, NULL '');" 
 +</code> 
 + 
 + 
 +==== Testdaten einspielen ==== 
 + 
 +<code bash alte Tabellen löschen> 
 +echo "DROP TABLE tabelle;" | sudo -u postgres psql -d testdb 
 +</code> 
 + 
 +<code bash Tabellen anlegen> 
 +cat Test-Tabellen-Schema.sql | psql -d testdb -U dbuser 
 +echo "\dt" | sudo -u postgres psql -d testdb 
 +</code> 
 + 
 +<code bash Header einfügen> 
 +(cat header.txt | tr -s '\n' '\t' | sed 's/\t$//'; echo ; cat export.tsv) > export+header.tsv 
 +</code> 
 + 
 +<code bash Daten einspielen> 
 +echo "COPY tabelle1 FROM 'export+header.tsv' WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH, NULL '');" | psql -U dbuser -d testdb 
 +oder 
 +cat export+header.tsv | psql -d testdb -U dbuser -c "COPY tabelle FROM STDIN WITH (FORMAT csv, DELIMITER E'\t', HEADER MATCH, NULL '');" 
 +</code> 
 + 
 +<code bash Datensätze zählen> 
 +echo "SELECT COUNT(*) AS tabelle FROM tabelle;" | psql -d testdb -U dbuser
 </code> </code>
  
  
/home/http/wiki/data/attic/datenbank/postgresql_dump.1778863944.txt · Zuletzt geändert: von manfred