PostgreSQL - Eksportuj tabelę do innej o innej nazwie, ale o tej samej strukturze

-1

Muszę wyeksportować jedną tabelę (tylko dane) do innej tabeli o innej nazwie, ale o tej samej strukturze, za pomocą narzędzia PostgreSQL i psql. Chciałbym również wyeksportować tylko niektóre rekordy i tylko kilka pól z tabeli źródłowej.

Czy ktoś mógłby mi dać przykład?

Dzięki!

Eduardo Lucio
źródło
1
Kiedy „głosujesz w dół” na pytanie, podaj swoje powody i co można poprawić! Oznacza to serdeczność i szacunek!
Eduardo Lucio
Moim zdaniem to pytanie jest jasne. Jeśli masz pytania, zobacz moją odpowiedź poniżej. Dziękuję Ci!
Eduardo Lucio
1
Twoje pytanie nie wymaga wysiłku badawczego i nie dajesz niczego, co już próbowałeś. Stwierdzono również, że chcesz, aby ktoś napisał dla Ciebie skrypt, a nie rozwiązał problem związany z eksportem.
Confuzing 14.07.17
@ Confuzing Proszę zobaczyć moją odpowiedź poniżej. Wierzę, że moje podejście może być przydatne dla osób, które nie rozumieją zbyt wiele skryptów bash i PostgreSQL. Dziękuję za twój wkład!
Eduardo Lucio
Odpowiedź może być prawidłowa, ale pytanie można dodać lub przeredagować, aby było lepiej. Często stosowanym wyrażeniem jest „superużytkownik nie jest usługą pisania skryptów” i tak właśnie czyta się obecnie twoje pytanie.
Confuzing 14.07.17

Odpowiedzi:

0

W porządku! Oto mój hack! To podejście „bash”!

UWAGA I:
<TARGET_DB_NAME> -> Załóż tę samą nazwę tabeli w źródle i celu! <TARGET_TABLE_NAME>-> Załóż tę samą nazwę bazy danych w źródle i celu!

UWAGA II: Używam „fbcf111499a6467ba” jako mało prawdopodobnej nazwy tabeli docelowej. Celem jest uniknięcie problemów w wykonaniu „sed”.

WYKONAĆ W „MASZYNIE ŹRÓDŁA” / „BAZIE DANYCH”

cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> -c "CREATE TABLE fbcf111499a6467ba AS SELECT column_a, column_b, column_c FROM <TARGET_TABLE_NAME> WHERE <YOUR_SEARCH_QUERY>;"
sudo -u postgres pg_dump --file "/tmp/<TARGET_TABLE_NAME>.sql" --table=fbcf111499a6467ba --data-only --column-inserts "<TARGET_DB_NAME>"
sed -i 's/INSERT INTO fbcf111499a6467ba (/INSERT INTO <TARGET_TABLE_NAME> (/g' /tmp/<TARGET_TABLE_NAME>.sql
sudo -u postgres psql <TARGET_DB_NAME> -c "DROP TABLE fbcf111499a6467ba;"

WYKONAĆ W „MASZYNIE DOCELOWEJ” / „BAZIE DANYCH”

cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> < /tmp/<TARGET_TABLE_NAME>.sql
Eduardo Lucio
źródło