Uzmanına Sor

Archive for the ‘bulk insert’ tag

Sql Server da Bulk Insert nedir?

without comments

Kısacası metin dosyalarının SQL Server’a aktarmanın en kolay yoludur. Bunu yapmanız için bilmeniz gereken ufak tefek ayrıntıdan başka bir şey yok.

Sıralamak gerekirse,

  • Metin dosyasının uzantısını
  • Kolonlar birbirinden hangi karakterle ayrılıyor
  • Satır sonları nasıl belirlenmiş bilmemiz yeterli.

Bulk Insert komutu ise,

BULK INSERT TableName FROM  ‘Path(DosyaYolu)’ WITH (FIELDTEMINATOR = ‘,’)

FIELDTERMINATOR – ile metin dosyamızda bulunan kayıtların kolonlara ayrılmak istenildiğinde hangi karakterle ayırma işlemi yapılacak olduğunu belirtliğimiz yerdir.

Ufak bir örnek yaparak deneme yapacak olursak bunun için hemen bir tablo oluşturalım.

CREATE TABLE User

(

id int,

Name nvarchar(50),

LastName  nvarchar(50),

Age int,

City nvarchar(50),

)

Sql tablomuzuda oluşturduk ya metin dosyamız??? Onuda basit bir şekilde yazıyorum hemen.

Mesela buda C klasörünün altında Users.txt metin dosyamız olsun.

1$Ali$Alioğlu$18$Istanbul

2$Veli$Velioğlu$19$Bursa

3$Ahmet$Ahmetoğlu$20$malatya

4$Mehmet$Mehmetoğlu$21$Edirne

BULK INSERT User FROM  ‘C:\Users.txt’ WITH (FIELDTEMINATOR = ‘$’)

Dolar ($) kullandım. Çünkü text içerisinde kullanılabilecek karakterden uzak durdum. İşimi garantiye aldım.

Bu şekilde hdd mizde bulunan bir txt dosyasını SQL de oluşturduğumuz bir tabloya taşımız bulunuyoruz.

Ama burada önemli nokta taşıma esnasında türkçe karakter sorunu yaşıyor olacağımızdır. Bunun çözümüde çok basit Bulk Insert komutumuza CODEPAGE = ‘1254′ eklememiz yeterli olucak.

Şu şekilde kullanıcaz yani

BULK INSERT User FROM  ‘C:\Users.txt’ WITH (FIELDTEMINATOR = ‘$’ , CODEPAGE = ‘1254′ )

Bu işlemleri sırasıyla yaptık ama birden karşımızda bir hata belirdi.

You do not have permission to use the bulk load statement.

Bu durum Bulk Insert yetkinizin olmamasından kaynaklanıyor. sysadmin veya bulkadmin rollerinize sahip olursanız bu hatayıda basitçe geçiceksiniz.

Written by Emrah Eroğlu

January 4th, 2010 at 11:02 am

Posted in Microsoft SQL Server

Tagged with ,