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
);
$$

Kategori seçin...