PGLoader

Postgresql’in veri kopyalama aracıdır.
Copy komutunu kullanır. Proses tüm veriyi kopyalayana kadar devam eder (on error
resume next).
Hata aldığında durması da sağlanabilir (on error stop).
Hatalı kayıtları log (reject.log) dosyasına yazar.

Özellikleri
Tek komutla veri göçü (One command migration),
Devam eden göç (Continuous migration),
Schema keşfi (discovery),
Parçalı göç (Partial Migration),
Data/Schema only,
PK/FK ,
HTTP’den veri transferi
Detay için pgloader.io sayfası ziyaret edilebilir.
Örnek 1
ekip.csv dosyasındaki virgülle ayrılmış verilerin postgresql’e aktarılması.
Adım 1
mehmed@dataera$ apt-get install pgloader
pgloader kurulur. Kaynak koddan da kurulabilir. github.com/dimitri/pgloader linkinden
kurulum dosyalarına ve kurulum kılavuzu temin edilebilir.
Not: pgloader 3.6.3 ile postgresql SHA-256 kimlik doğrulama metodu arasında
uyumsuzluk var. pgloader’ın veritabanına bağlanacağı kullanıcının ve password_
encryption parametresinin md5’ e çekilmesi gerekebilir.
Adım 2
PGPASSWORD="hr" psql -h 192.168.56.61 -p 5434 -d mx -U hr create table emp ( no integer, isim varchar(10), bölüm varchar(15), maaş integer );
Tablonun önceden oluşturulması gerekir.
Adım 3
mehmed@dataera$ vim /data/emp/ekip.csv 100,Ahmed,Satış,5000 200,Ali,Bilgi işlem,5500 300,Mehmed,Yazılım Gel.,7000 400,Mustafa,Finans,9500 500,Ömer,ArGe,6000 501,Davud,Muhasebe,5400
emp.csv dosyasına örnek veri girişi yapılır.
Adım 4
LOAD CSV FROM ‘/data/emp/ekip.csv’ HAVING FIELDS ( no, isim, bölüm, maaş ) INTO postgresql://postgres:welcome1@192.168.56.61:5434/mx TARGET TABLE hr.ekip TARGET COLUMNS (no, isim, bölüm, maaş) WITH truncate, fields terminated by ',' SET work_mem to '32 MB', maintenance_work_mem to '64 MB';
emp.load dosyasına veri kaynağı ve hedef veritabanı bağlantı bilgileri girilir.
Adım 5
mehmed@dataera:/data/emp$ pgloader ekip.load 2022-07-25T05:12:42.007000Z LOG pgloader version “3.6.3~devel” 2022-07-25T05:12:42.149000Z LOG report summary reset table name errors rows bytes total time ----------------------- --------- --------- --------- -------------- fetch 0 0 0.003s ----------------------- --------- --------- --------- -------------- “hr”.”ekip” 0 6 0.1 kB 0.025s ----------------------- --------- --------- --------- -------------- Files Processed 0 1 0.011s COPY Threads Completion 0 2 0.025s ----------------------- --------- --------- --------- -------------- Total import time ✓ 6 0.1 kB 0.036s
pgloader komutu ile emp.load tetiklenir.
pgloader --debug tekip.load
Hata çözümleri için debug modda çalıştırılabilir
MySQL’ den Postgresql’e tek komutla göç
pgloader mysql://kullanıcı:şifre@mysqlserver_IP/ Vtismi?useSSL=false \ postgresql://kullanıcı:şifre@ postgresserver_IP/VTismi
MsSQL’ den Postgresql’e tek komutla göç
load database from mssql://kullanıcı@mssqlserver_IP/dbname into postgresql://kullanıcı:şifre@postgresserver_IP/ VTismi
Veriyi kopyalamadan önce kullanılabilecek opsiyonlardan bazıları
BEFORE LOAD DO $$ create extension if not exists ip4r; $$, $$ create schema if not exists hr; $$, $$ create table if not exists hr.ekip ( no integer, isim varchar(10), bölüm varchar(15), maaş integer ); $$
