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 INSERTAynı 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 hedefdbAynı 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.