DBAtlas · Veritabanı operasyon atlası

Tablolar / ortamlar arası veri kopyala

Oracle

-- Var olan tabloya
INSERT INTO hedef (id, ad) SELECT id, ad FROM kaynak WHERE durum = 'AKTIF';

-- Yeni tablo oluşturarak (CTAS)
CREATE TABLE hedef AS SELECT * FROM kaynak;

-- Uzak veritabanından database link ile
INSERT INTO hedef SELECT * FROM kaynak@uzak_db;

Aynı veritabanında INSERT ... SELECT veya CREATE TABLE AS SELECT (CTAS) kullanılır. Ortamlar arası kopyada database link (@uzak_db) veya Data Pump tercih edilir. APPEND hint direct-path ile hızlandırır.

PostgreSQL

-- Aynı veritabanı
INSERT INTO hedef (id, ad) SELECT id, ad FROM kaynak;
CREATE TABLE hedef AS SELECT * FROM kaynak;

-- Ortamlar arası (psql pipe ile)
-- pg_dump -t kaynak kaynakdb | psql hedefdb
-- veya postgres_fdw ile uzak tabloyu okuyup INSERT

Aynı DB içinde INSERT ... SELECT / CTAS kullanılır. Sunucular arası için pg_dump | psql boru hattı ya da postgres_fdw ile foreign table üzerinden kopyalama yapılır.

MySQL

-- Aynı veritabanı
INSERT INTO hedef (id, ad) SELECT id, ad FROM kaynak;
CREATE TABLE hedef AS SELECT * FROM kaynak;

-- Sunucular arası (mysqldump pipe)
-- mysqldump kaynakdb kaynak | mysql -h hedefsunucu hedefdb

Aynı DB'de INSERT ... SELECT veya CREATE TABLE ... AS SELECT. Farklı sunucular arasında mysqldump çıktısını mysql istemcisine boru ile aktarmak yaygındır. CTAS index ve constraint'leri kopyalamaz.

SQL Server

-- Var olan tabloya
INSERT INTO hedef (id, ad) SELECT id, ad FROM kaynak;

-- Yeni tablo oluşturarak
SELECT * INTO hedef FROM kaynak;

-- Sunucular arası: linked server
INSERT INTO hedef SELECT * FROM [UZAK_SRV].magaza.dbo.kaynak;

SQL Server'da yeni tabloya kopyalama SELECT ... INTO ile yapılır (CTAS karşılığı). Sunucular arası için linked server (dört parçalı ad) ya da bcp out/in veya SSIS kullanılır.

MongoDB

// Aggregation sonucunu başka koleksiyona yaz
db.kaynak.aggregate([
  { $match: { durum: "AKTIF" } },
  { $out: "hedef" }
]);

// Var olan koleksiyona birleştir (upsert)
db.kaynak.aggregate([ { $merge: { into: "hedef", whenMatched: "merge", whenNotMatched: "insert" } } ]);

$out hedef koleksiyonu tamamen değiştirir; $merge var olan belgelerle birleştirir/ekler (aynı veya başka DB). Sunucular arası taşımada mongodump | mongorestore veya mongoexport/mongoimport kullanılır.

Redis

# Tek anahtarı başka sunucuya taşı (kaynaktan silinir)
MIGRATE hedef_host 6379 musteri:1 0 5000

# Kopyalamak için (silmeden): DUMP + RESTORE
DUMP musteri:1          # serileştirilmiş değeri döndürür
RESTORE musteri:1yeni 0 "<dump-verisi>"

MIGRATE anahtarı hedef instance'a atomik taşır ve kaynaktan siler (COPY seçeneği ile silmez). Aynı instance içinde kopya için COPY komutu (6.0+) ya da DUMP+RESTORE kullanılır.

Elasticsearch

# Aynı küme içinde
POST _reindex
{ "source": { "index": "kaynak" }, "dest": { "index": "hedef" } }

# Uzak kümeden (remote reindex; whitelist ayarı gerekir)
POST _reindex
{ "source": { "remote": { "host": "http://uzak:9200" }, "index": "kaynak" },
  "dest": { "index": "hedef" } }

_reindex index'ler arası kopyalar; sorguyla filtrelenebilir ve script ile dönüştürülebilir. Kümeler arası için remote reindex kullanılır (hedefte reindex.remote.whitelist tanımlı olmalı). Büyük işler için slices ile paralelleştirilir.

DBAtlas'ta aç →