Ana içeriğe geç
Kesit SQL
İleri · Veritabanı Yönetimi (DBA)

Veri içe ve dışa aktarma: BULK INSERT, COPY, linked server, OPENROWSET

CSV/Excel yükleme, sunucular arası sorgu, toplu aktarım araçları.

Uygulamada aç, 3 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Dosyadan tabloya

SQL türüKomut / araç
SQL ServerBULK INSERT, bcp komut satırı aracı, SSMS “Import Flat File”, OPENROWSET(BULK ...)
PostgreSQLCOPY tablo FROM 'dosya.csv' (sunucu), \copy (psql istemcisi)
MySQLLOAD DATA [LOCAL] INFILE
OracleSQL*Loader, harici tablo (external table)
BigQueryLOAD DATA INTO, bq load, Cloud Storage'dan harici tablo
-- SQL Server: CSV'yi tabloya yükle
BULK INSERT dbo.raw_signups
FROM 'D:\\veri\\signups.csv'
WITH (FORMAT = 'CSV', FIRSTROW = 2, FIELDTERMINATOR = ';', CODEPAGE = '65001');

-- PostgreSQL
COPY raw_signups FROM '/veri/signups.csv' WITH (FORMAT csv, HEADER true, DELIMITER ';');

-- MySQL
LOAD DATA LOCAL INFILE '/veri/signups.csv' INTO TABLE raw_signups
FIELDS TERMINATED BY ';' IGNORE 1 LINES;

-- BigQuery
LOAD DATA INTO anadolu.raw_signups
FROM FILES (format = 'CSV', skip_leading_rows = 1, uris = ['gs://kova/signups.csv']);
Önce stagingDosyayı doğrudan asıl tabloya değil, tüm sütunları metin olan bir ara tabloya yükle. Tip dönüşümü ve temizliği SQL ile yaparsın; hatalı satır yüzünden yükleme yarıda kalmaz.
Türkçe karakterlerDosyanın kodlaması (UTF-8 mi Windows-1254 mü?) belirtilmezse “ş, ğ, İ” bozuk görünür. SQL Server'da CODEPAGE = '65001' UTF-8 demektir.

Sunucular arası sorgu

-- Uzak sunucudaki Oracle tablosunu sorgula
SELECT * FROM OPENQUERY(ORA_MUHASEBE, 'SELECT fatura_no, tutar FROM faturalar WHERE yil = 2024');

-- Excel dosyasını oku (Ad Hoc Distributed Queries açık olmalı)
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0;Database=D:\\veri\\hedefler.xlsx', 'SELECT * FROM [Sayfa1$]');

Tablodan dosyaya

SQL Server'da bcp "SELECT ..." queryout dosya.csv, PostgreSQL'de COPY (SELECT ...) TO, MySQL'de SELECT ... INTO OUTFILE, BigQuery'de EXPORT DATA OPTIONS(uri = 'gs://...').

Alıştırmalara geç (3)