BULK INSERT (Transact-SQL)

Bir veri dosyasını bir veritabanı tablosuna veya görünümüne kullanıcının belirttiği biçimde alır.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

BULK INSERT 
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ] 
      FROM 'data_file' 
     [ WITH 
    ( 
   [ [ , ] BATCHSIZE = batch_size ] 
   [ [ , ] CHECK_CONSTRAINTS ] 
   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ [ , ] DATAFILETYPE = 
      { 'char' | 'native'| 'widechar' | 'widenative' } ] 
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ] 
   [ [ , ] FIRSTROW = first_row ] 
   [ [ , ] FIRE_TRIGGERS ] 
   [ [ , ] FORMATFILE = 'format_file_path' ] 
   [ [ , ] KEEPIDENTITY ] 
   [ [ , ] KEEPNULLS ] 
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ] 
   [ [ , ] LASTROW = last_row ] 
   [ [ , ] MAXERRORS = max_errors ] 
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] 
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ] 
   [ [ , ] ROWTERMINATOR = 'row_terminator' ] 
   [ [ , ] TABLOCK ] 
   [ [ , ] ERRORFILE = 'file_name' ] 
    )] 

Bağımsız değişkenler

  • database_name
    Belirtilen tablonun veya görünümün durduğu veritabanının adıdır. Belirtilmezse, bu geçerli veritabanıdır.

  • schema_name
    Tablo veya şemanın adıdır. Toplu alma işlemini gerçekleştiren kullanıcının varsayılan şeması belirtilen tablo veya görünümün şeması ise schema_name isteğe bağlıdır. schema belirtilmezse ve toplu alma işlemini gerçekleştiren kullanıcının varsayılan şeması tablo veya görünümde belirtilenden farklıysa, SQL Server bir hata iletisi döndürür ve toplu alma işlemi iptal edilir.

  • table_name
    Verilerin içine toplu alınacağı tablo veya görünümün adıdır. Yalnızca tüm sütunların aynı taban tabloya başvurduğu görünümler kullanılabilir. Görünümlere veri yüklemeye ilişkin kısıtlamalar hakkında daha fazla bilgi için, bkz. Insert (Transact-sql).

  • 'data_file'
    Belirtilen tablo veya görünüme alınacak verileri içeren veri dosyasının tam yoludur. BULK INSERT bir diskten (ağ, disket, sabit disk vb. dahil) veri alabilir.

    data_file, üzerinde SQL Server'ın çalıştığı sunucudan geçerli bir yol belirtmelidir. data_file uzak bir dosya ise, Tekdüzen Adlandırma Kuralı (UNC) adını belirtin. Bir UNC adı \\Systemname\ShareName\Path\FileName biçimindedir. Örneğin, \\SystemX\DiskZ\Sales\update.txt.

  • BATCHSIZE **=**batch_size
    Toplu bir işteki satır sayısını belirtir. Her toplu iş sunucuya bir işlem olarak kopyalanır. Bu başarısız olursa, SQL Server her toplu işin işlemini yürütür veya geri alır. Varsayılan olarak belirtilen veri dosyasındaki tüm veriler bir tek toplu iştir. Performans değerlendirmeleri hakkında bilgi için, bu konuda daha sonra gelen "Yorumlar" bölümüne bakın.

  • CHECK_CONSTRAINTS
    Hedef tablo veya görünümdeki tüm kısıtlamaların toplu alma işlemi sırasında denetlenmesi gerektiğini belirtir. CHECK_CONSTRAINTS seçeneği olmadan herhangi bir CHECK ve FOREIGN KEY kısıtlaması yoksayılır ve işlemden sonra tablonun kısıtlaması güvenilmez olarak işaretlenir.

    [!NOT]

    UNIQUE, PRIMARY KEY ve NOT NULL kısıtlamaları her zaman zorlanır.

    Belirli bir noktada tüm tablo üzerindeki kısıtlamaları incelemeniz gerekir. Tablo toplu işlemden önce boş değildiyse, kısıtlamayı yeniden doğrulamanın maliyeti verilere artımlı olarak kısıtlamalar için CHECK uygulamanın maliyetini aşabilir.

    Kısıtlamaların devre dışı (varsayılan davranış) bırakmak isteyebileceğiniz bir durum, giriş verilerinin kısıtlamaları ihlal eden satırlar içerdiği durumdur. Verileri, kısıtlamalar için CHECK devre dışı bırakılmış olarak alıp sonra geçersiz verileri kaldırmak üzere Transact-SQL deyimlerini kullanabilirsiniz.

    [!NOT]

    MAXERRORS seçeneği kısıtlama denetimine uygulanmaz.

    [!NOT]

    SQL Server 2005 ve sonraki sürümlerde, BULK INSERT, var olan komut dosyalarının bir veri dosyasındaki geçersiz veriler üzerinde yürütüldüklerinde başarısız olmalarına neden olabilecek yeni veri doğrulamalarını ve veri denetimlerini zorlar.

  • CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }
    Verilerin kod sayfasının veri dosyasında olduğunu belirtir. CODEPAGE yalnızca veriler 127'den büyük veya 32'den küçük karakter değerleri olan char, varchar veya text sütunları içeriyorsa anlamlıdır.

    [!NOT]

    Microsoft, birbiçim dosyasında her sütun için bir harmanlama adı belirtmenizi önerir.

    CODEPAGE değeri

    Açıklama

    ACP

    char, varchar veya text veri türünde sütunlar ANSI/Microsoft Windows kod sayfasından (ISO 1252) SQL Server kod sayfasına dönüştürülür.

    OEM (varsayılan)

    char, varchar veya text veri türündeki sütunlar sistem OEM kod sayfasından SQL Server kod sayfasına dönüştürülür.

    RAW

    Bir kod sayfasından başka bir kod sayfasına dönüştürme yapılmaz; en hızlı seçenektir.

    code_page

    Özel kod sayfası numarası; örneğin 850.

    Önemli notÖnemli
    SQL Server kod sayfası 65001'i (UTF-8 kodlaması) desteklemez.
  • DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }
    BULK INSERT'ün alma işlemini belirtilen veri dosyası tür değerini kullanarak yapacağını belirtir.

    DATAFILETYPE değeri

    Tüm veriler şu türlerle temsil edilir:

    char (varsayılan)

    Karakter biçimi.

    Daha fazla bilgi için, bkz. (SQL Server) veri aldığınızda veya için karakter biçimi kullanma.

    native

    Yerel (veritabanı) veri türleri. Yerel veri dosyasını, verileri bcp yardımcı programını kullanarak SQL Server'dan toplu alarak oluşturun.

    native değer char değerine oranla daha yüksek performanslı bir seçenek sunar.

    Daha fazla bilgi için, bkz. Yerel biçim aldığınızda veya veri (SQL Server) kullanmak.

    widechar

    Unicode karakterleri.

    Daha fazla bilgi için, bkz. Aldığınızda veya veri (SQL Server) için Unicode karakter biçimi kullanma.

    widenative

    Verilerin Unicode olarak depolandığı char, varchar ve text sütunlarındakiler dışındaki yerel (veritabanı) veri türleri. widenative veri dosyasını, verileri bcp yardımcı programını kullanarak SQL Server'dan toplu alarak oluşturun.

    widenative değeri, widechar değerine oranla daha yüksek performanslı bir seçenek sunar. Veri dosyası ANSI genişletilmiş karakterleri içeriyorsa, widenative seçeneğini belirtin.

    Daha fazla bilgi için, bkz. Unicode yerel biçim aldığınızda veya veri (SQL Server) kullanmak.

  • FIELDTERMINATOR ='field_terminator'
    char ve widechar veri dosyaları için kullanılacak alan sonlandırıcıyı belirtir. Varsayılan alan sonlandırıcı \t (sekme) karakteridir. Daha fazla bilgi için, bkz. Alan ve satır sonlandırıcılar (SQL Server) belirtin.

  • FIRSTROW **=**first_row
    Yüklenecek ilk satırın numarasını belirtir. Varsayılan veri dosyasındaki ilk satırdır. FIRSTROW 1'den başlar.

    [!NOT]

    FIRSTROW özniteliği sütun başlıklarını atlama amaçlı değildir. Başlıkları atlama BULT INSERT deyiminde desteklenmez. Satır atlarken, SQL Server Veritabanı Altyapısı yalnızca alan sonlandırıcılara bakar ve atlanan satırların alanlarındaki verileri doğrulamaz.

  • FIRE_TRIGGERS
    Hedef tabloda tanımlı tüm ekleme tetikleyicilerinin toplu alma işlemi sırasında yürütülmesi gerektiğini belirtir. Hedef tablo üzerindeki INSERT işlemlerinde tetikleyiciler tanımlanırsa, bunlar tamamlanan her işte yürütülür.

    FIRE_TRIGGERS belirtilmezse, hiçbir ekleme tetikleyicisi yürütülmez.

  • FORMATFILE ='format_file_path'
    Bir biçim dosyasının tam yolunu belirtir. Bir biçim dosyası, bcp yardımcı programı kullanılarak aynı tablo veya görünüm üzerinde oluşturulmuş saklı yanıtları içeren veri dosyasını betimler. Biçim dosyası şu koşullar varsa kullanılmalıdır:

    • Veri dosyası tablo veya görünümden daha fazla veya daha az sütun içeriyorsa.

    • Sütunlar farklı bir sıradaysa.

    • Sütun sınırlayıcıları değişkenlik gösteriyorsa.

    • Veri biçiminde başka değişiklikler varsa. Biçim dosyaları tipik olarak bcp yardımcı programı kullanılarak oluşturulur ve gerektiğinde bir metin düzenleyici ile değiştirilir. Daha fazla bilgi için, bkz. BCP yardımcı programı.

  • KEEPIDENTITY
    Alınan veri dosyasındaki kimlik değerinin veya değerlerinin kimlik sütunu için kullanılacağını belirtir. KEEPIDENTITY belirtilmediyse, bu sütunun kimlik değerleri doğrulanır ancak alınmaz ve SQL Server, tablo oluşturma sırasında belirtilen kök ve artım değerlerine dayanarak otomatik olarak benzersiz değerler atar. Veri dosyası bir tablo veya görünümdeki kimlik sütunu için değerler içermiyorsa, tablo veya görünümdeki kimlik sütununun veri alınırken atlanacağını belirtmek için bir biçim dosyası belirtin; SQL Server sütuna otomatik olarak benzersiz değerler atar. Daha fazla bilgi için, bkz. DBCC CHECKIDENT (Transact-SQL).

    Kimlik değerlerini koruma hakkında daha fazla bilgi için, bkz. Kimlik değerleri toplu olduğunda veri (SQL Server) alma tutun.

  • KEEPNULLS
    Toplu alma işlemi sırasında boş sütunlara herhangi bir varsayılan değer eklemek yerine sütunların null değeri tutması gerektiğini belirtir. Daha fazla bilgi için, bkz. (SQL Server) toplu alma işlemi sırasında NULL veya UseDefault değerleri tutmak.

  • KILOBYTES_PER_BATCH = kilobytes_per_batch
    Toplu iş başına yaklaşık kilobayt (KB) miktarını kilobytes_per_batch olarak belirtir. Varsayılan olarak KILOBYTES_PER_BATCH bilinmez. Performans değerlendirmeleri hakkında bilgi için, bu konuda daha sonra gelen "Yorumlar" bölümüne bakın.

  • LASTROW**=**last_row
    Yüklenecek son satırın numarasını belirtir. Varsayılan değer 0'dır ve belirtilen veri dosyasındaki son satırı gösterir.

  • MAXERRORS = max_errors
    Toplu alma işlemi iptal edilmeden önce veride izin verilecek en yüksek sözdizimi hatası sayısını belirtir. Toplu alma işlemi tarafından alınamayan her satır yoksayılır ve bir hata olarak sayılır. max_errors belirtilmezse, varsayılan 10'dur.

    [!NOT]

    MAX_ERRORS seçeneği kısıtlama denetimlerinde veya money ve bigint veri türlerini dönüştürmede uygulanmaz.

  • ORDER ( { column [ ASC | DESC ] } [ ,... n ] )
    Veri dosyasındaki verilerin nasıl sıralandığını belirtir. Alınmakta olan veriler, varsa tablodaki küme dizinine göre sıralanırsa, toplu alma performansı iyileşir. Veri dosyası farklı bir sıraya; yani küme dizini anahtarının sırasından başka bir sıraya göre sıralanmışsa veya tabloda bir küme dizini yoksa, ORDER yan tümcesi yoksayılır. Sağlanan sütun adlarının hedef tabloda geçerli sütun adları olması gerekir. Toplu ekleme işlemi, varsayılan olarak veri dosyasının sıralanmamış olduğunu kabul eder. İyileştirilmiş toplu almada SQL Server ayrıca alınan verilerin sıralı olduğunu da doğrular.

  • n
    Birden çok sütunun belirtilebileceğini gösteren bir yer tutucudur.

  • ROWS_PER_BATCH **=**rows_per_batch
    Veri dosyasındaki yaklaşık veri satırı sayısını gösterir.

    Varsayılan olarak veri dosyasındaki tüm veriler sunucuya tek bir işlemle gönderilir ve toplu işteki satır sayısı sorgu iyileştirici tarafından bilinmez. ROWS_PER_BATCH değerini (> 0 olan bir değerle) belirtirseniz, sunucu bu değeri toplu alma işlemini iyileştirmek için kullanır. ROWS_PER_BATCH için belirtilen değer, gerçek satır sayısı ile yaklaşık aynı olmalıdır. Performans değerlendirmeleri hakkında bilgi için, bu konuda daha sonra gelen "Yorumlar" bölümüne bakın.

  • ROWTERMINATOR ='row_terminator'
    char ve widechar veri dosyaları için kullanılacak satır sonlandırıcıyı belirtir. Varsayılan satır sonlandırıcı \r\n (yeni satır) karakteridir. Daha fazla bilgi için, bkz. Alan ve satır sonlandırıcılar (SQL Server) belirtin.

  • TABLOCK
    Toplu alma işlemi boyunca tablo düzeyi bir kilit alındığını belirtir. Bir tablonun hiçbir dizini yoksa ve TABLOCK belirtilmişse, tablo aynı anda birden çok istemci tarafından yüklenebilir. Varsayılan olarak kilitleme davranışı toplu yüklemede tablo kilidi açık seçeneği ile belirlenir. Toplu alma işlemi boyunca bir kilidi tutmak tablodaki kilit çatışmalarını azaltır, bazı durumlarda da performansı önemli oranda iyileştirebilir. Performans değerlendirmeleri hakkında bilgi için, bu konuda daha sonra gelen "Yorumlar" bölümüne bakın.

  • ERRORFILE ='file_name'
    Biçimlendirme hataları olan ve bir OLE DB satır kümesine dönüştürülemeyecek olan satırları toplamak için kullanılan dosyayı belirtir. Bu satırlar veri dosyasından bu hata dosyasına "olduğu gibi" kopyalanır.

    Hata dosyası komut yürütüldüğünde oluşturulur. Dosya zaten varsa bir hata oluşur. Ayrıca, uzantısı .ERROR.txt olan bir denetim dosyası oluşturulur. Bu dosya, hata dosyasındaki her satıra başvurur ve hata tanıları sağlar. Hatalar düzeltilir düzeltilmez veriler yüklenebilir.

Uyumluluk

BULK INSERT, bir dosyadan okunan ve var olan komut dosyalarının geçersiz veriler üzerinde yürütüldüklerinde başarısız olmalarına neden olabilecek verilere katı veri doğrulamaları ve veri denetimleri zorlar. Örneğin, BULK INSERT aşağıdakileri doğrular:

  • float veya real veri türlerinin yerel gösterimleri geçerli.

  • Unicode verilerinin sabit bir uzunluğu var.

Veri Türleri

Dizeden Ondalığa Veri Türü Dönüştürmeleri

BULK INSERT'te kullanılan dizeden ondalığa veri türü dönüştürmeler, bilimsel gösterim kullanan sayısal değerleri gösteren dizeleri reddeden Transact-SQL CONVERT işlevi ile aynı kuralları uygular. Dolayısıyla BULK INSERT bu tür dizeleri geçersiz değerler olarak görür ve dönüştürme hataları bildirir.

Bu davranışı aşmak için, bilimsel gösterimli float verilerini bir decimal sütununa toplu almak için bir biçim dosyası kullanın. Biçim dosyasında, sütunu açık olarak real veya float verisi olarak betimleyin. Bu veri türleri hakkında daha fazla bilgi için, bkz. kayan nokta ve gerçek (Transact-sql).

[!NOT]

Biçim dosyaları real verilerini SQLFLT4 veri türü ve float verilerini SQLFLT8 veri türü olarak temsil eder. XML olmayan biçim dosyaları hakkında bilgi için, bkz. Dosya depolama türü (SQL Server) kullanma bcp tarafından belirtme.

Bilimsel Gösterim Kullanan Sayısal Bir Değeri Alma Örneği

Bu örnek aşağıdaki tabloyu kullanmaktadır:

CREATE TABLE t_float(c1 float, c2 decimal (5,4))

CREATE TABLE t_float(c1 float, c2 decimal (5,4))

Kullanıcı verileri t_float tablosuna toplu almak istemektedir. C:\t_float-c.dat veri dosyası bilimsel gösterimli float verileri içermektedir; örneğin:

8.0000000000000002E-28.0000000000000002E-2

8.0000000000000002E-28.0000000000000002E-2

Ancak BULK INSERT bu verileri doğrudan t_float türüne alamaz çünkü ikinci sütunu c2 decimal veri türünü kullanmaktadır. Dolayısıyla, bir biçim dosyası gerekmektedir. Biçim dosyası bilimsel gösterimli float verilerini c2 sütununun decimal biçimi ile eşlemelidir.

Aşağıdaki biçim dosyası, ikinci veri alanını ikinci sütuna eşlemek için SQLFLT8 veri türünü kullanmaktadır:

<?xml version="1.0"?>

<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<RECORD>

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/>

<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/> </RECORD> <ROW>

<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/>

<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/> </ROW> </BCPFORMAT>

Sınama verilerini sınama tablosuna almak üzere bu biçim dosyasını (C:\t_floatformat-c-xml.xml dosya adıyla) kullanmak için, aşağıdaki Transact-SQL deyimini yürütün:

BULK INSERT bulktest..t_float
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');
GO

BULK INSERT bulktest..t_float
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');
GO

SQLXML Belgelerini Toplu Almak veya Vermek için Veri Türleri

SQLXML verilerini toplu almak veya vermek için, biçim dosyanızda aşağıdaki veri türlerinden birini kullanın:

Veri türü

Etkisi

SQLCHAR veya SQLVARYCHAR

İstemci kod sayfasında veya harmanlamanın dolaylı getirdiği kod sayfasında gönderilen veriler). Etkisi, biçim dosyası belirtmeden DATAFILETYPE = 'char' belirtmekle aynıdır.

SQLNCHAR veya SQLNVARCHAR

Veriler Unicode olarak gönderilir. Etkisi, biçim dosyası belirtmeden DATAFILETYPE = 'widechar' belirtmekle aynıdır.

SQLBINARY veya SQLVARYBIN

Veriler dönüştürülmeden gönderilir.

Genel Yorumlar

BULK INSERT deyimin, INSERT ... SELECT * FROM OPENROWSET(BULK...) deyiminin ve bcp komutunun bir karşılaştırması için, bkz. Toplu alma ve verme veri (SQL Server).

Verileri toplu içe aktarmaya hazırlama hakkında daha fazla bilgi için, bkz. Veri toplu verme veya alma (SQL Server) için hazırlama.

BULK INSERT deyimi, bir tablo veya görünüme veri almak için, kullanıcı tanımlı bir işlem içinde yürütülebilir. İsteğe bağlı olarak, verileri toplu almak üzere birden çok eşleşme kullanmak için, bir işlem, BULK INSERT deyiminde BATCHSIZE yan tümcesini belirtebilir. Birden çok toplu işlem geri alınırsa, işlemin SQL Server'a gönderdiği her toplu iş geri alınır.

Birlikte Çalışabilirlik

Bir CSV Dosyasından Veri Alma

Virgülle ayrılmış değer (CSV) dosyaları SQL Server toplu alma işlemleri tarafından desteklenmez. Ancak bazı durumlarda, SQL Server için toplu veri almak için veri dosyası olarak bir CSV dosyası kullanılabilir. Bir CSV veri dosyasından veri alma gereksinimleri hakkında daha fazla için, bkz. Veri toplu verme veya alma (SQL Server) için hazırlama.

Günlüğe Yazma Davranışı

Toplu alma ile gerçekleştirilen satır ekleme işlemlerinin işlem günlüğüne ne zaman yazıldığı hakkında daha fazla bilgi için, bkz. Toplu alma Minimal günlüğü için Önkoşullar.

Performans Değerlendirmeleri

Tek bir toplu işte temizlenecek sayfa sayısı dahili bir eşiği aşarsa, toplu iş yürütüldüğünde hangi sayfaların temizleneceğini belirlemek için arabellek havuzunda tam bir tarama yapılabilir. Bu tam tarama toplu alma performansını düşürebilir. Dahili eşiği aşmanın olası bir nedeni, büyük bir arabellek havuzu yavaş bir G/Ç alt sistemiyle birleştirildiğinde ortaya çıkar. Büyük makinelerde arabellek taşmalarından kaçınmak için, TABLOCK ipucunu kullanmayın (toplu iyileştirmeleri kaldırır) veya daha küçük bir toplu iş boyutu kullanın (toplu iyileştirmeleri korur).

Bilgisayarlar değişkenlik gösterdiğinden, size en iyi uyanı bulmak için veri yükünüzle değişik toplu iş boyutlarını sınamanızı öneririz.

Güvenlik

Güvenlik Hesabı Temsili (Kişiler Bürünmesi)

Bir SQL Server kullanıcısı Windows Kimlik Doğrulaması kullanarak oturum açarsa, kullanıcı, SQL Server işleminin güvenlik profilinden bağımsız olarak yalnızca kullanıcı hesabının erişebildiği dosyaları okuyabilir.

BULK INSERT deyimini sqlcmd veya osql kullanarak, tek bir bilgisayardan, ikinci bir bilgisayardaki SQL Server'a veri ekleyerek ve bir UNC yolu belirterek üçüncü bir bilgisayardaki bir data_file verilerine başvurarak çalıştırırken bir 4861 hatası alabilirsiniz.

Bu sorunu çözmek için, SQL Server Kimlik Doğrulaması'nı kullanın ve SQL Server işlem hesabının güvenlik profilini kullanan bir SQL Server oturum açma adı belirtin veya Windows'u güvenlik hesabı devrini olanaklı kılacak şekilde yapılandırın. Bir kullanıcı hesabını yetki devri için güvenilir yapmanın nasıl sağlanacağı hakkında daha fazla bilgi için, bkz. Windows Yardım.

BULK INSERT kullanmaya ilişkin bu ve diğer güvenlik değerlendirmeleri hakkında daha fazla bilgi için, bkz. Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma (SQL Server).

İzinler

INSERT ve ADMINISTER BULK OPERATIONS izinleri gerektirir. Ayrıca, aşağıdakilerden biri veya birkaçı söz konusuysa ALTER TABLE izni gerekir:

  • Kısıtlamalar varsa ve CHECK_CONSTRAINTS seçeneği belirtilmediyse.

    [!NOT]

    Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça denetlemek için, CHECK_CONSTRAINTS seçeneğini kullanın.

  • Tetikleyiciler varsa ve FIRE_TRIGGER seçeneği belirtilmediyse.

    [!NOT]

    Varsayılan olarak tetikleyiciler yürütülmez. Tetikleyicileri açık olarak yürütmek için FIRE_TRIGGER seçeneğini kullanın.

  • Veri dosyasından kimlik değeri almak için KEEPIDENTITY seçeneğini kullanıyorsanız.

Örnekler

A.Bir dosyadan veri almak için ardışık düzenler kullanma

Aşağıdaki örnek, belirtilen dosyadan AdventureWorks.Sales.SalesOrderDetail tablosuna, ardışık bir düzeni (|) alan sonlandırıcı olarak ve |\n karakterini satır sonlandırıcı olarak kullanarak sipariş ayrıntısı bilgileri almaktadır.

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      )

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      )

B.FIRE_TRIGGERS değişkenini kullanma

Aşağıdaki örnek FIRE_TRIGGERS değişkenini belirtmektedir.

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH
     (
        FIELDTERMINATOR =' |',
        ROWTERMINATOR = ':\n',
        FIRE_TRIGGERS
      )

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH
     (
        FIELDTERMINATOR =' |',
        ROWTERMINATOR = ':\n',
        FIRE_TRIGGERS
      )

C.Satır besleme karakterini satır sonlandırıcı olarak kullanma

Aşağıdaki örnek, bir UNIX çıktısı gibi satır besleme karakterini satır sonlandırıcı olarak kullanan bir dosyayı almaktadır:

DECLARE @bulk_cmd varchar(1000)
SET @bulk_cmd = 'BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>'' 
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'
EXEC(@bulk_cmd)

DECLARE @bulk_cmd varchar(1000)
SET @bulk_cmd = 'BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>'' 
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'
EXEC(@bulk_cmd)

Ek Örnekler

Diğer BULK INSERT örnekleri şu konularda sağlanmıştır:

Ayrıca bkz.

Başvuru

BCP yardımcı programı

Insert (Transact-sql)

OPENROWSET (Transact-SQL)

sp_tableoption (Transact-sql)

Kavramlar

Toplu alma ve verme veri (SQL Server)

Biçimi dosyaları (SQL Server) veri verme veya alma için

Veri toplu verme veya alma (SQL Server) için hazırlama