Dosyadan tabloya
| SQL türü | Komut / araç |
|---|---|
| SQL Server | BULK INSERT, bcp komut satırı aracı, SSMS “Import Flat File”, OPENROWSET(BULK ...) |
| PostgreSQL | COPY tablo FROM 'dosya.csv' (sunucu), \copy (psql istemcisi) |
| MySQL | LOAD DATA [LOCAL] INFILE |
| Oracle | SQL*Loader, harici tablo (external table) |
| BigQuery | LOAD 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
- Linked server (SQL Server): Başka bir sunucuyu (SQL Server, Oracle, Excel…) tanımlayıp dört parçalı adla sorgularsın:
SUNUCU.veritabani.dbo.tablo.OPENQUERYsorguyu uzak sunucuda çalıştırır. - OPENROWSET: Tek seferlik, tanımsız bağlantı (genellikle kapalıdır, güvenlik için açılması onay ister).
- PostgreSQL:
postgres_fdw/dblink. Oracle: database link (tablo@uzak_db). BigQuery: federasyon sorguları (EXTERNAL_QUERY).
-- 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://...').