Se si è soddisfatti di eseguire l'hard-code dell'elenco di tabelle, ma si desidera che ciascuna sia in un file diverso, è possibile utilizzare un ciclo di script della shell per eseguire il comando pg_dump
più volte, sostituendo ogni volta il nome della tabella iterazione:
for table in table1 table2 table3 etc;
do pg_dump -t $table -U userName dbName > /home/anik/psqlTest/db_dump_dir/$table.sql;
done;
EDIT: Questo approccio può essere esteso per ottenere l'elenco delle tabelle dinamicamente eseguendo una query attraverso psql e alimentando i risultati nel ciclo anziché un elenco hard-coded:
for table in $(psql -U userName -d dbName -t -c "Select table_name From information_schema.tables Where table_type='BASE TABLE' and table_name like 'thr_%'");
do pg_dump -t $table -U userName dbName > /home/anik/psqlTest/db_dump_dir/$table.sql;
done;
Quiesegue SQL
e restituisce i risultati senza intestazione o piè di pagina; poiché è selezionata una sola colonna, sarà presente un nome di tabella su ogni riga dell'output catturato da $(command)
e la shell effettuerà un ciclo attraverso di essi uno alla volta.
È necessario spiegare * perché * si desidera 90 diversi file - esportazione in MySQL, backup parziale? Se stai tentando di eseguire un backup/esportazione, la risposta di IMSoP non garantirà la stessa istantanea per ogni tabella. –
@RichardHuxton Buon punto, non avevo pensato alla non-atomicità. Suppongo che potresti invece creare un singolo backup "personalizzato" dal DB e quindi estrarre le singole tabelle da quella usando 'pg_restore'. – IMSoP