PostgreSQL’de pg_dump ile Tablo Bazlı Veri Senkronizasyonu (Backup & Restore Rehberi)
PostgreSQL projelerinde en sık karşılaşılan ihtiyaçlardan biri, farklı ortamlardaki (örneğin test ve prod) veritabanları arasında belirli tabloların veri senkronizasyonudur. Bu yazıda, pg_dump ve psql kullanarak iki farklı veritabanı arasında tablo bazlı veri taşıma ve eşleştirme sürecini adım adım ele alacağız.
Amacımız; aynı şemaya sahip tabloların verilerini güvenli bir şekilde dışa aktarmak (backup) ve başka bir veritabanına hatasız şekilde geri yüklemek (restore) olacaktır.
1. PostgreSQL pg_dump Kurulumu
İlk adım olarak PostgreSQL araçlarının sistemimize kurulması gerekiyor.
Aşağıdaki link üzerinden PostgreSQL kurulum paketini indiriyoruz:
Kurulum sırasında:
Windows x86-64 versiyonu seçilir veya hangi platform ise.
Kurulum tamamlandıktan sonra şu dizinde araçların oluştuğunu doğrularız:
C:\Program Files\PostgreSQL\16\binBu dizin içerisinde:
pg_dump.exe
psql.exe
gibi gerekli araçlar yer almalıdır.
2. pg_dump Çalıştığını Doğrulama
PowerShell açarak aşağıdaki komutu çalıştırıyoruz:
& "C:\Program Files\PostgreSQL\16\bin\pg_dump.exe" --versionEğer doğru kurulum yapıldıysa, pg_dump versiyonu ekrana basılır. Bu adım ile kurulumun başarılı olduğunu doğrulamış oluruz.
3. Export (Backup) Script Hazırlığı
PostgreSQL’de özellikle schema isimlerinde case-sensitive (büyük/küçük harf duyarlılığı) olduğu için, PowerShell üzerinden güvenli bir export dosyası oluşturuyoruz.
Öncelikle masaüstüne bir dump.sql dosyası oluşturuyoruz:
@"\COPY "schema"."table" TO 'C:\Users\Public\loc_1.csv' CSV HEADER;\COPY "schema"."table" TO 'C:\Users\Public\loc_2.csv' CSV HEADER;\COPY "schema"."table" TO 'C:\Users\Public\loc_3.csv' CSV HEADER;"@ | Out-File -FilePath "$env:USERPROFILE\Desktop\dump.sql" -Encoding utf8Bu script, belirtilen tabloların verilerini CSV formatında dışarı aktarır.
4. Backup İşleminin Çalıştırılması
Şimdi oluşturduğumuz dump.sql dosyasını çalıştırarak verileri dışarı alıyoruz:
$env:PGPASSWORD="YOUR_PASSWORD"; & "C:\Program Files\PostgreSQL\16\bin\psql.exe" ` -h test-db` -U postgres ` -d dbName` -f "$env:USERPROFILE\Desktop\dump.sql"Bu işlem sonucunda:
Tablolardaki veriler CSV dosyalarına aktarılır
Backup süreci tamamlanmış olur
5. Restore Script Hazırlığı
Restore işlemi sırasında en kritik konu duplicate data (tekrar eden veri) problemidir.
Bunu önlemek için staging (geçici) tablolar kullanıyoruz.
@"
-- Staging tablolar
CREATE TABLE IF NOT EXISTS "SampleSchema"."tmp_table1" (LIKE "SampleSchema"."Table1" INCLUDING ALL);
CREATE TABLE IF NOT EXISTS "SampleSchema"."tmp_table2" (LIKE "SampleSchema"."Table2" INCLUDING ALL);
CREATE TABLE IF NOT EXISTS "SampleSchema"."tmp_table3" (LIKE "SampleSchema"."Table3" INCLUDING ALL);
-- CSV yükle
\COPY "SampleSchema"."tmp_table1" FROM 'C:\Users\Public\table1.csv' CSV HEADER;
\COPY "SampleSchema"."tmp_table2" FROM 'C:\Users\Public\table2.csv' CSV HEADER;
\COPY "SampleSchema"."tmp_table3" FROM 'C:\Users\Public\table3.csv' CSV HEADER;
-- Insert işlemleri (duplicate önleme)
INSERT INTO "SampleSchema"."Table1"
SELECT * FROM "SampleSchema"."tmp_table1"
ON CONFLICT DO NOTHING;
INSERT INTO "SampleSchema"."Table2"
SELECT * FROM "SampleSchema"."tmp_table2"
ON CONFLICT DO NOTHING;
INSERT INTO "SampleSchema"."Table3"
SELECT * FROM "SampleSchema"."tmp_table3"
ON CONFLICT DO NOTHING;
-- Temizlik
DROP TABLE "SampleSchema"."tmp_table1";
DROP TABLE "SampleSchema"."tmp_table2";
DROP TABLE "SampleSchema"."tmp_table3";
"@ | Out-File -FilePath "$env:USERPROFILE\Desktop\restore.sql" -Encoding utf8Bu yapı sayesinde:
Aynı kayıtlar tekrar eklenmez
Sadece farklı/veri eksik olan kayıtlar insert edilir
FK bağımlılıkları güvenli şekilde korunur.
6. Restore İşleminin Çalıştırılması
Son adım olarak restore scriptini çalıştırıyoruz:
$env:PGPASSWORD="YOUR_PASSWORD"; & "C:\Program Files\PostgreSQL\16\bin\psql.exe" ` -h host ` -U postgres ` -p port ` -d dbName` -f "$env:USERPROFILE\Desktop\restore.sql"Bu işlem sonrası:
CSV dosyalarındaki veriler staging tablolara yüklenir
Daha sonra ana tablolara kontrollü şekilde aktarılır
Veri senkronizasyonu tamamlanır
Sonuç
Bu yöntem ile PostgreSQL üzerinden, aşağıdaki yapıları başarıyla gerçekleştirilmiş olursunuz.
Tablo bazlı veri export/import
Cross-database senkronizasyon
Duplicate veri kontrolü
PowerShell tabanlı otomasyon
Mikro servis migration süreçleri
Lokalizasyon / master data senkronizasyonu


dự đoán xsmb mình thấy trên mấy nhóm hay nhắc nên bữa nay rảnh bấm vào coi thử cho biết. Mình không phải dân soi cầu gì đâu, chủ yếu xem họ trình bày có dễ theo dõi không. Vào cái là thấy bài “Soi cầu MB ngày 16 8 2026” nằm ngay phần đầu nên khỏi phải mò, nhìn phát biết hôm nay họ đang nói ngày nào. Kéo xuống chút thì nội dung chia theo từng khối, tiêu đề rõ ràng nên đọc lướt cũng hiểu đại khái họ thống kê kết quả quay trước rồi lọc ra cặp số gợi ý. Mình thích mấy đoạn nhận định được tách riêng, không dính thành một cục chữ dài.…
Mình coi xổ số kiểu cho đỡ chán thôi, chủ yếu giải trí nên không kỳ vọng nhiều chuyện trúng hay không. Trước đây nghe bạn bè hay nói về mấy “cầu” nọ kia, mình cũng tò mò thử tìm hiểu nhưng lúc đầu mù mờ lắm. Theo dõi một thời gian thì thấy đôi khi có vài dạng số lặp lại khiến mình chú ý hơn, nhưng vẫn giữ thái độ thử cho biết. https://soicauxsmb.io/soi-cau-xsmb-168.html Mỗi lần đọc nhận định, mình hay ghi lại vài ý ngắn rồi đợi kết quả để so xem có phải mình tự tưởng tượng quá không. Có hôm trúng chút thì vui, có hôm lệch xa nên mình tự nhắc đừng tin tuyệt…