Ho bisogno di copiare il contenuto di una tabella da un database ad un altro database con una tabella identica che è attualmente vuota.pg_dump vs COPY (SELECT * FROM my_table)
Ho intenzione di scaricare i dati della tabella dalla vecchia tabella e quindi semplicemente importarlo nella tabella vuota nel nuovo database. Tuttavia, mi sono imbattuto in qualche comportamento che non capisco usando pg_dump.
cerco di scaricare i dati della tabella in un file con il comando:
pg_dump -a -t '"my_table"' my_database > /tmp/my_table.sql
questo funziona, ma ho solo 8 dischi e ci sono oltre 1000 i record nella tabella se visualizzare la tabella in questo modo :
SELECT * FROM my_table;
Così, ho cercato di usare il comando COPY per generare un file .csv e vedo un comportamento simile:
COPY my_table TO '/tmp/my_table.csv' WITH CSV HEADER;
Ottengo gli stessi 8 record di pg_dump. Ma con:
COPY (SELECT * FROM my_table) TO '/tmp/my_table.csv' WITH CSV HEADER;
Ottengo tutti i record 1266.
Suppongo che questi comandi debbano tutti restituire gli stessi dati, ma ovviamente, ho torto. Qual è la differenza?
È piuttosto pazzesco. Puoi mostrare l'output? –
quanti dischi in '/ tmp/my_table.sql'? – xdazz