Bir tablonun içeriğini bir veritabanından başka bir veritabanına şu anda boş olan bir tabloya kopyalamam gerekiyor.pg_dump vs KOPYA (SELECT * FROM my_table)
Tablo verilerini eski tablodan dökmeyi ve ardından yeni veritabanındaki boş tabloya aktarmayı planlıyorum. Ancak, pg_dump kullanarak anlamadığım bazı davranışlara rastladım.
Ben komutuyla bir dosyaya tablo veri dökümü deneyin:
pg_dump -a -t '"my_table"' my_database > /tmp/my_table.sql
Bu çalışır, ancak ben şöyle tablosunu görüntülemek eğer sadece 8 kayıtları almak ve tabloda 1000'den fazla kayıt var :
SELECT * FROM my_table;
Yani, bir .csv dosyası oluşturmak için COPY komutunu kullanmaya çalıştı ve ben benzer bir davranışla:
COPY my_table TO '/tmp/my_table.csv' WITH CSV HEADER;
pg_dump ile aynı 8 kaydı alıyorum. Ancak aşağıdakilerle birlikte:
Tüm 1266 kayıtlarını alıyorum.
Bu komutların hepsinin aynı verileri döndürmesi gerektiğini varsayalım, açıkçası yanılıyorsunuz. Fark ne?
Bu oldukça çılgın. Çıkışı gösterebilir misin? –
'/ tmp/my_table.sql'de kaç kayıt var? – xdazz