Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te ambar
Veri dosyasını SQL Server'da kullanıcı tarafından belirtilen biçimde bir veritabanı tablosuna veya görünümüne aktarır.
Transact-SQL söz dizimi kuralları
Sözdizimi
BULK INSERT
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }
FROM 'data_file'
[ WITH
(
[ [ , ] DATA_SOURCE = 'data_source_name' ]
-- text formatting options
[ [ , ] CODEPAGE = { 'RAW' | 'code_page' | 'ACP' | 'OEM' } ]
[ [ , ] DATAFILETYPE = { 'char' | 'widechar' | 'native' | 'widenative' } ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FORMAT = 'CSV' ]
[ [ , ] FIELDQUOTE = 'quote_characters' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] LASTROW = last_row ]
-- input file format options
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] FORMATFILE_DATA_SOURCE = 'data_source_name' ]
-- error handling options
[ [ , ] MAXERRORS = max_errors ]
[ [ , ] ERRORFILE = 'file_name' ]
[ [ , ] ERRORFILE_DATA_SOURCE = 'errorfile_data_source_name' ]
-- database options
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] TABLOCK ]
-- source options
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ , ...n ] ) ]
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] BATCHSIZE = batch_size ]
) ]
BULK INSERT
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }
FROM 'data_file'
[ WITH
(
[ [ , ] DATA_SOURCE = 'data_source_name' ]
-- text formatting options
[ [ , ] CODEPAGE = { 'code_page' | 'ACP' } ]
[ [ , ] DATAFILETYPE = { 'char' | 'widechar' } ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FORMAT = { 'CSV' | 'PARQUET' } ]
[ [ , ] FIELDQUOTE = 'quote_characters' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] LASTROW = last_row ]
-- input file format options
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] FORMATFILE_DATA_SOURCE = 'data_source_name' ]
-- error handling options
[ [ , ] MAXERRORS = max_errors ]
[ [ , ] ERRORFILE = 'file_name' ]
[ [ , ] ERRORFILE_DATA_SOURCE = 'errorfile_data_source_name' ]
) ]
Tartışmalar
deyiminin BULK INSERT farklı platformlarda farklı bağımsız değişkenleri ve seçenekleri vardır. Farklılıklar aşağıdaki tabloda özetlenir:
| Özellik | SQL Sunucusu | Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği | Fabric Veri Ambarı |
|---|---|---|---|
| Veri kaynağı | Yerel yol, Ağ yolu (UNC) veya Azure Depolama | Azure Depolama | Azure Storage, One Lake |
| Kaynak kimlik doğrulaması | Windows kimlik doğrulaması, SAS | Microsoft Entra Id, SAS belirteci, yönetilen kimlik | Microsoft Entra Kimliği |
| Desteklenmeyen seçenekler |
* yolda joker kartlar, FORMAT = 'PARQUET' |
* yolda joker kartlar, FORMAT = 'PARQUET' |
DATAFILETYPE = {'native' | 'widenative'} |
| Etkin seçenekler ancak etkin değil |
KEEPIDENTITY, FIRE_TRIGGERS, CHECK_CONSTRAINTS, TABLOCK, ORDER, , ROWS_PER_BATCH, , KILOBYTES_PER_BATCHve BATCHSIZE geçerli değildir. Söz dizimi hatası oluşturmaz, ancak herhangi bir etkisi yoktur |
database_name
Belirtilen tablo veya görünümün bulunduğu veritabanı adı. Belirtilmezse geçerli veritabanı database_name .
schema_name
Tablo veya görünüm şemasının adını belirtir. schema_name , toplu içeri aktarma işlemini gerçekleştiren kullanıcının varsayılan şeması belirtilen tablo veya görünümün şemasıysa isteğe bağlıdır. Şema belirtilmezse ve toplu içeri aktarma işlemini gerçekleştiren kullanıcının varsayılan şeması belirtilen tablo veya görünümden farklıysa, SQL Server bir hata iletisi döndürür ve toplu içeri aktarma işlemi iptal edilir.
table_name
Verileri toplu olarak içeri aktaracak tablonun veya görünümün adını belirtir. Yalnızca tüm sütunların aynı temel tabloya başvuracağı görünümler kullanılabilir. Görünümlere veri yükleme kısıtlamaları hakkında daha fazla bilgi için bkz. INSERT.
'data_file' SITESINDEN
Belirtilen tabloya veya görünüme aktaracak verileri içeren veri dosyasının tam yolunu belirtir.
BULK INSERT bir diskten veya Azure Depolama'dan (ağ, disket, sabit disk vb. dahil) veri içe aktarabilir.
BULK INSERT bing_covid_19_data
FROM 'C:\\bing_covid-19_data\public\curated\covid-19\latest\bing_covid-19_data.csv';
data_file , SQL Server'ın çalıştığı sunucudan geçerli bir yol belirtmelidir.
data_file uzak bir dosyaysa Evrensel Adlandırma Kuralı (UNC) adını belirtin. UNC adı biçimindedir \\SystemName\ShareName\Path\FileName. Örneğin:
BULK INSERT bing_covid_19_data
FROM '\\ShareX\bing_covid-19_data\public\curated\covid-19\latest\bing_covid-19_data.csv';
Azure SQL Database ve Fabric Data Warehouse, URI'den veri okumayı destekler, ancak on-premises dosya yollarını desteklemezler.
BULK INSERT bing_covid_19_data
FROM 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv';
SQL Server 2017 (14.x) ile itibaren, data_file Azure Storage'da olabilir. Bu durumda seçeneği de belirtmeniz data_source_name gerekir. Örneğin, Azure Storage içindeki bir dosyadan veri içe aktarma bölümünü görebilirsiniz.
Fabric Data Warehouse, kaynak yolunu belirlemek için iki farklı yol stilini destekler:
https://<storage account>.blob.core.windows.net/<container name>/<path to file>abfss://<container name>@<storage account>.dfs.core.windows.net/<path to file>
Fabric Data Warehouse * , URI'deki herhangi bir karakterle eşleşebilen joker kartları destekler ve içe aktarılması gereken dosyalar için bir URI deseni tanımlamanızı sağlar. Örneğin:
BULK INSERT bing_covid_19_data
FROM 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/*.csv';
Uyarı
değerini uygun bir URL ile değiştirin <data-lake>.blob.core.windows.net .
VERİ_KAYNAĞI
Şunlara uygulanır: SQL Server 2017 (14.x) ve sonraki sürümler, Azure SQL Database ve Microsoft Fabric'te Warehouse.
Dosya içe aktarma için Azure Storage kök konumuna işaret eden adlandırılmış harici veri kaynağını belirtir.
CREATE EXTERNAL DATA SOURCE pandemicdatalake
WITH (LOCATION = 'https://<data-lake>.blob.core.windows.net/public/');
Uyarı
değerini uygun bir URL ile değiştirin <data-lake>.blob.core.windows.net .
Daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE.
Maddedeki FROM dosya yolu, harici veri kaynağında tanımlanan kök konumuna eklenmiş göreceli bir yol olmalıdır.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, LASTROW = 100, FIELDTERMINATOR = ',');
Uyarı
Basitlik için, aşağıdaki örnekler göreceli yollar ve önceden tanımlanmış harici veri kaynakları kullanır..
CODEPAGE
Veri dosyasındaki verilerin kod sayfasını belirtir.
CODEPAGEyalnızca veriler karakter değerinden büyük veya ondan küçük karakter değerlerine sahip karakter, 127 veya 32 sütunları içeriyorsa geçerlidir. Örnek için bkz. Kod sayfası belirtme.
BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, CODEPAGE = '65001');
CODEPAGE SQL Server 2017 (14.x) için Linux'ta desteklenen bir seçenek değildir. SQL Server 2019 (15.x) için yalnızca seçeneğine 'RAW'CODEPAGEizin verilir.
Biçim dosyasındaki her sütun için bir harmanlama adı belirtmelisiniz.
CODEPAGE değer |
Açıklama |
|---|---|
ACP |
Char, varchar veya metin veri türü sütunları ANSI/Microsoft Windows kod sayfasından (ISO 1252) SQL Server kod sayfasına dönüştürülür. |
OEM (varsayılan) |
Karakter, varchar veya metin veri türü sütunları sistem OEM kodu sayfasından SQL Server kod sayfasına dönüştürülür. |
RAW |
Bir kod sayfasından diğerine dönüştürme gerçekleşmez.
RAW en hızlı seçenektir. |
| code_page | Belirli bir kod sayfası numarası, örneğin 850. SQL Server 2016 (13.x) öncesi sürümler, 65001 (UTF-8 kodlama) kod sayfasını desteklemez. |
CODEPAGE değer |
Açıklama |
|---|---|
ACP |
Char, varchar veya metin veri türü sütunları ANSI/Microsoft Windows kod sayfasından (ISO 1252) SQL Server kod sayfasına dönüştürülür. |
| code_page | Belirli bir kod sayfası numarası, örneğin 850. SQL Server 2016 (13.x) öncesi sürümler, 65001 (UTF-8 kodlama) kod sayfasını desteklemez. |
DATAFILETYPE
Belirtilen veri dosyası türü değerini kullanarak içeri aktarma işleminin gerçekleştirildiğini BULK INSERT belirtir.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2, DATAFILETYPE = 'char');
Uyarı
değerini uygun bir URL ile değiştirin <data-lake>.blob.core.windows.net .
DATAFILETYPE değer |
içinde temsil edilen tüm veriler |
|---|---|
char (varsayılan) |
Karakter biçimi. Daha fazla bilgi için bkz. Veri içe aktarmak veya dışa aktarmak için karakter formatını kullan. |
widechar |
Unicode karakterler. Daha fazla bilgi için, verileri aktarmak veya dışa aktarmak için Unicode karakter formatını kullan bkz. |
native |
Yerel (veritabanı) veri türleri.
bcp yardımcı programını kullanarak SQL Server'dan verileri toplu olarak içeri aktararak yerel veri dosyasını oluşturun. Yerel değer, karakter değerine daha yüksek bir performans alternatifi sunar. Genişletilmiş/çift baytlık karakter kümesi (DBCS) karakterleri içermeyen bir veri dosyası kullanarak sql Server'ın birden çok örneği arasında verileri toplu olarak aktardığınızda yerel biçim önerilir. Daha fazla bilgi için, verileri aktarmak veya dışa aktarmak için yerel format kullan bz. |
widenative |
Verilerin Unicode olarak depolandığı char, varchar ve metin sütunları dışında yerel (veritabanı) veri türleri.
widenative
bcp yardımcı programını kullanarak VERILERI SQL Server'dan toplu olarak içeri aktararak veri dosyasını oluşturun.değeri, widenative için daha yüksek bir performans alternatifi widecharsunar. Veri dosyasında ANSI genişletilmiş karakterleri varsa belirtin widenative.Daha fazla bilgi için , Unicode Yerel Formatı Veriyi İçe Aktarmak veya Dışa Aktarmak için Kullan sayfasına bakınız. |
DATAFILETYPE değer |
içinde temsil edilen tüm veriler |
|---|---|
char (varsayılan) |
Karakter biçimi. Daha fazla bilgi için bkz. Veri içe aktarmak veya dışa aktarmak için karakter formatını kullan. |
widechar |
Unicode karakterler. Daha fazla bilgi için, verileri aktarmak veya dışa aktarmak için Unicode karakter formatını kullan bkz. |
MAXERRORS
Toplu içeri aktarma işlemi iptal edilmeden önce verilerde izin verilen en fazla söz dizimi hatası sayısını belirtir. Toplu içeri aktarma işlemi tarafından içeri aktarılabilen her satır yoksayılır ve tek bir hata olarak sayılır. max_errors belirtilmezse, varsayılan değer 10'dur.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', MAXERRORS = 0);
Bu MAX_ERRORS seçenek, kısıtlama kontrolleri veya para ve bigint veri türlerinin dönüştürülmesi için geçerli değildir.
HATA DOSYASI
Biçimlendirme hataları olan ve OLE DB satır kümesine dönüştürülemez satırları toplamak için kullanılan dosyayı belirtir. Bu satırlar, "olduğu gibi" veri dosyasından bu hata dosyasına kopyalanır.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake',
ERRORFILE = 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/errors');
Uyarı
değerini uygun bir URL ile değiştirin <data-lake>.blob.core.windows.net .
Komut yürütülürken hata dosyası oluşturulur. Dosya zaten varsa bir hata oluşur. Ayrıca, uzantılı .ERROR.txt bir denetim dosyası oluşturulur ve bu dosyadaki her satıra başvurur ve hata tanılaması sağlar. Hatalar düzeltildikten hemen sonra veriler yüklenebilir.
SQL Server 2017 (14.x) ile itibaren, error_file_path Azure Storage'da olabilir.
HATA_DOSYASI_VERİ_KAYNAĞI
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümler.
İç aktarma sırasında bulunan hataları takip etmek için hata dosyasının Azure Depolama konumuna işaret eden adlandırılmış harici veri kaynağını belirtir.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
DATA_SOURCE = 'pandemicdatalake',
ERRORFILE = 'curated/covid-19/bing_covid-19_data/latest/errors',
ERRORFILE_DATA_SOURCE = 'pandemicdatalake'
);
Dış veri kaynakları oluşturma hakkında daha fazla bilgi için HARICI VERI KAYNAĞI OLUŞTUR sayfasına bakınız.
İLK SIRA
Yüklenecek ilk satırın sayısını belirtir. Varsayılan değer, belirtilen veri dosyasındaki ilk satırdır.
FIRSTROW 1 tabanlıdır.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIRSTROW = 2);
FIRSTROW özniteliği, sütun üst bilgilerini atlamak için tasarlanmamıştır. deyimi BULK INSERT üst bilgilerin atlanmasını desteklemez. Satırları atlamayı seçerseniz, SQL Server Veritabanı Altyapısı yalnızca alan sonlandırıcılarına bakar ve atlanan satır alanlarındaki verileri doğrulamaz.
LASTROW
Yüklenecek son satırın sayısını belirtir. Varsayılan değer 0'dır ve bu, belirtilen veri dosyasındaki son satırı gösterir.
TOPLU BOYUT
Toplu iş içindeki satır sayısını belirtir. Her toplu işlem tek bir işlem olarak sunucuya kopyalanır. Bu başarısız olursa, SQL Server her toplu işlem için işlemi işler veya geri alır. Varsayılan olarak, belirtilen veri dosyasındaki tüm veriler tek bir toplu işlemdir. Performansla ilgili önemli noktalar hakkında bilgi için bu makalenin devamında yer alan Performansla ilgili dikkat edilmesi gerekenler bölümüne bakın.
KISITLAMALARI_KONTROL_ET
Toplu içeri aktarma işlemi sırasında hedef tablo veya görünümdeki tüm kısıtlamaların denetlenebilmesi gerektiğini belirtir.
CHECK_CONSTRAINTS seçeneği olmadan, ve CHECKFOREIGN KEY kısıtlamaları yoksayılır ve işlemden sonra tablodaki kısıtlama güvenilir değil olarak işaretlenir.
UNIQUE ve PRIMARY KEY kısıtlamaları her zaman zorlanır. Kısıtlamayla NOT NULL tanımlanan bir karakter sütununa içeri aktarırken, BULK INSERT metin dosyasında değer olmadığında boş bir dize ekler.
Bir noktada, tablonun tamamında kısıtlamaları incelemeniz gerekir. Tablo toplu içeri aktarma işleminden önce boş değilse, kısıtlamayı yeniden doğrulama maliyeti artımlı verilere kısıtlama uygulama CHECK maliyetini aşabilir.
Giriş verilerinin kısıtlamaları ihlal eden satırlar içermesi durumunda kısıtlamaların devre dışı bırakılmasını isteyebileceğiniz bir durumdur (varsayılan davranış).
CHECK Kısıtlamalar devre dışı bırakıldıktan sonra verileri içeri aktarabilir ve geçersiz verileri kaldırmak için Transact-SQL deyimlerini kullanabilirsiniz.
Uyarı
bu MAXERRORS seçenek kısıtlama denetimi için geçerli değildir.
TETİKLEYİCİLERİ_ATEŞLE
Hedef tabloda tanımlanan tüm ekleme tetikleyicilerinin toplu içeri aktarma işlemi sırasında yürütüldüğünü belirtir. Tetikleyiciler hedef tablodaki işlemler için INSERT tanımlanmışsa, tamamlanan her toplu işlem için tetiklenir.
Belirtilmezse FIRE_TRIGGERS , hiçbir ekleme tetikleyicisi yürütülemez.
KEEPIDENTITY
İçeri aktarılan veri dosyasındaki kimlik değerinin veya değerlerinin kimlik sütunu için kullanılacağını belirtir. Belirtilmezse KEEPIDENTITY , bu sütunun kimlik değerleri doğrulanır ancak içeri aktarılmaz ve SQL Server, tablo oluşturma sırasında belirtilen tohum ve artış değerlerine göre otomatik olarak benzersiz değerler atar. Veri dosyası tablo veya görünümdeki kimlik sütunu için değerler içermiyorsa, veri içeri aktarılırken tablodaki veya görünümdeki kimlik sütununun atlanması gerektiğini belirtmek için bir biçim dosyası kullanın; SQL Server, sütun için otomatik olarak benzersiz değerler atar. Daha fazla bilgi için bkz. DBCC CHECKIDENT
Daha fazla bilgi için, kimlik değerlerini tutma hakkında bkz. Toplu veri aktarırken kimlik değerlerini sakla.
KEEPNULLS
Eklenen sütunlar için varsayılan değerler yerine, toplu içeri aktarma işlemi sırasında boş sütunların null değeri tutması gerektiğini belirtir. Daha fazla bilgi için, toplu ithalat sırasında null veya varsayılan değerleri sakla bkz.
KILOBYTES_PER_BATCH
Kilobytes_per_batch olarak toplu iş başına yaklaşık kilobayt (KB) veri sayısını belirtir. Varsayılan olarak, KILOBYTES_PER_BATCH bilinmiyor. Performansla ilgili önemli noktalar hakkında bilgi için bu makalenin devamında yer alan Performansla ilgili dikkat edilmesi gerekenler bölümüne bakın.
ORDER
Veri dosyasındaki verilerin nasıl sıralanacağını belirtir. İçeri aktarılan veriler varsa tablodaki kümelenmiş dizine göre sıralanırsa toplu içeri aktarma performansı iyileştirilir. Veri dosyası kümelenmiş dizin anahtarının sırası dışında bir düzende sıralanmışsa veya tabloda kümelenmiş dizin yoksayılır ORDER . Sağlanan sütun adları, hedef tabloda geçerli sütun adları olmalıdır. Varsayılan olarak toplu ekleme işlemi veri dosyasının sıralı olmadığını varsayar. İyileştirilmiş toplu içeri aktarma için SQL Server, içeri aktarılan verilerin sıralandığını da doğrular.
n , birden çok sütunun belirtilebileceğini belirten bir yer tutucudur.
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 tek bir işlem olarak sunucuya gönderilir ve toplu işlemdeki satır sayısı sorgu iyileştiricisi tarafından bilinmez. Belirtirseniz ROWS_PER_BATCH (0 değeriyle > ), sunucu toplu içeri aktarma işlemini iyileştirmek için bu değeri kullanır. için ROWS_PER_BATCH belirtilen değer, gerçek satır sayısıyla yaklaşık olarak aynı olmalıdır. Performansla ilgili önemli noktalar hakkında bilgi için bu makalenin devamında yer alan Performansla ilgili dikkat edilmesi gerekenler bölümüne bakın.
TABLOCK
Toplu içeri aktarma işlemi süresi boyunca tablo düzeyinde bir kilidin alındığını belirtir. Tabloda dizin yoksa ve TABLOCK belirtilmişse, bir tablo birden çok istemci tarafından eşzamanlı olarak yüklenebilir. Varsayılan olarak, kilitleme davranışı toplu yüklemede tablo seçeneği tablo kilidi tarafından belirlenir. Toplu içeri aktarma işleminin süresi boyunca bir kilidin tutulması, tablodaki kilit çekişmesini azaltır, bazı durumlarda performansı önemli ölçüde iyileştirebilir. Performansla ilgili önemli noktalar hakkında bilgi için bu makalenin devamında yer alan Performansla ilgili dikkat edilmesi gerekenler bölümüne bakın.
Bir columnstore dizini için kilitleme davranışı farklıdır çünkü dahili olarak birden çok satır kümesine ayrılmıştır. Her iş parçacığı, eş zamanlı veri yükleme oturumlarıyla paralel veri yüküne izin vererek satır kümesinde özel (X) bir kilit alarak verileri her satır kümesine özel olarak yükler. seçeneğinin TABLOCK kullanılması, iş parçacığının tabloda özel bir kilit almasına neden olur (geleneksel satır kümeleri için toplu güncelleştirme (BU) kilidinin aksine), diğer eşzamanlı iş parçacıklarının verileri eşzamanlı olarak yüklemesini engeller.
Giriş dosyası biçimi seçenekleri
FORMAT
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümler.
RFC 4180 standardıyla uyumlu virgülle ayrılmış değerler dosyasını belirtir.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FORMAT = 'CSV');
Fabric Data Warehouse'da bu BULK INSERT ifade ifadeyle aynı formatları COPY INTO destekler, bu FORMAT = 'PARQUET' yüzden de desteklenir.
ALAN ALATI
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümler.
CSV dosyasında tırnak karakteri olarak kullanılacak bir karakter belirtir. Belirtilmezse, teklif karakteri (") RFC 4180 standardında tanımlandığı gibi tırnak karakteri olarak kullanılır.
FORMATFILE
Biçim dosyasının tam yolunu belirtir. Biçim dosyası, aynı tablo veya görünümde bcp yardımcı programı kullanılarak oluşturulan depolanan yanıtları içeren veri dosyasını açıklar.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake',
FORMATFILE = 'https://<data-lake>.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.fmt');
Uyarı
değerini uygun bir URL ile değiştirin <data-lake>.blob.core.windows.net .
Biçim dosyası şu durumlarda kullanılmalıdır:
- Veri dosyası tablo veya görünümden daha büyük veya daha az sütun içeriyor.
- Sütunlar farklı bir sıradadır.
- Sütun sınırlayıcıları farklılık gösterir.
- Veri biçiminde başka değişiklikler de vardır. Biçim dosyaları genellikle bcp yardımcı programı kullanılarak oluşturulur ve gerektiğinde bir metin düzenleyicisiyle değiştirilir. Daha fazla bilgi için bcp Utility ve bcp ile bir format dosyası oluştur bölümlerine bakınız.
SQL Server 2017 (14.x) ile başlayıp Azure SQL Veritabanı'nda format_file_path Azure Storage içinde olabilir.
FORMATFILE_DATA_SOURCE
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümler.
İçe aktarılan veri şemasını tanımlamak için format dosyasının Azure Depolama konumuna işaret eden adlanmış harici veri kaynağını belirtir.
BULK INSERT bing_covid_19_data
FROM 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
DATA_SOURCE = 'pandemicdatalake',
FORMATFILE = 'curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.fmt',
FORMATFILE_DATA_SOURCE = 'pandemicdatalake'
);
FIELDTERMINATOR
Kullanılacak char alan sonlandırıcısını ve widechar veri dosyalarını belirtir. Varsayılan alan sonlandırıcısı \t 'dır (sekme karakteri). Daha fazla bilgi için bkz. Alan ve satır sonlandırıcılarını belirtme.
BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', FIELDTERMINATOR = ',', FIRSTROW = 2);
ROWTERMINATOR
Kullanılacak char satır sonlandırıcıyı ve widechar veri dosyalarını belirtir.
BULK INSERT bing_covid_19_data
FROM '/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (DATA_SOURCE = 'pandemicdatalake', ROWTERMINATOR = '\r\n', FIRSTROW = 2);
Varsayılan satır sonlandırıcı (carriage return ve newline karakteri)dir \r\n . Daha fazla bilgi için bkz. Alan ve satır sonlandırıcılarını belirtme.
Uyumluluk
BULK INSERT , bir dosyadan okunan verilerin geçersiz veriler üzerinde yürütülürken mevcut betiklerin başarısız olmasına neden olabilecek katı veri doğrulama ve veri denetimleri uygular. Örneğin, BULK INSERT şunları doğrular:
- Kayan veya gerçek veri türlerinin yerel gösterimleri geçerlidir.
- Unicode verilerinin bayt uzunluğu çift sayıdır.
Veri türleri
Dizeden ondalıka veri türü dönüştürmeleri
içinde BULK INSERT kullanılan dizeden ondalıka veri türü dönüştürmeleri, bilimsel gösterim kullanan sayısal değerleri temsil eden dizeleri reddeden Transact-SQL CONVERT işleviyle aynı kuralları izler. Bu nedenle, BULK INSERT bu tür dizeleri geçersiz değerler olarak değerlendirir ve dönüştürme hatalarını bildirir.
Bu davranışa geçici bir çözüm olarak bilimsel gösterimi kayan verileri ondalık sütuna toplu olarak içeri aktarmak için bir biçim dosyası kullanın. Biçim dosyasında sütunu açıkça gerçek veya kayan veri olarak tanımlayın. Bu veri türleri hakkında daha fazla bilgi için bkz. kayan ve gerçek.
Biçim dosyaları , gerçek verileri SQLFLT4 veri türü olarak, kayan verileri ise SQLFLT8 veri türü olarak gösterir. XML formatı olmayan dosyalar hakkında bilgi için bcp kullanarak dosya depolama tipini belirtin bkz.
Bilimsel gösterim kullanan sayısal bir değeri içeri aktarma örneği
Bu örnekte veritabanında aşağıdaki tablo bulktest kullanılır:
CREATE TABLE dbo.t_float
(
c1 FLOAT,
c2 DECIMAL (5, 4)
);
Kullanıcı verileri tabloya toplu olarak t_float aktarmak istiyor. veri dosyası, C:\t_float-c.datbilimsel gösterimi kayan verileri içerir; örneğin:
8.0000000000000002E-2 8.0000000000000002E-2
Bu örneği kopyalarken, sekme karakterlerini (\t) boşluk olarak kaydeden farklı metin düzenleyicileri ve kodlamaları unutmayın. Bu örnekte daha sonra bir sekme karakteri beklenir.
Ancak, BULK INSERT ikinci sütunu t_float veri türünü kullandığından, c2bu verileri doğrudan içine aktaramaz. Bu nedenle, bir biçim dosyası gereklidir. Biçim dosyasının bilimsel gösterimi float verilerini sütunun c2ondalık biçimiyle eşlemesi gerekir.
Aşağıdaki biçim dosyası, ikinci veri alanını ikinci sütuna eşlemek için SQLFLT8 veri türünü kullanır:
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://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>
Test verilerini test tablosuna aktarmak için bu biçim dosyasını (dosya adını C:\t_floatformat-c-xml.xmlkullanarak) kullanmak için aşağıdaki Transact-SQL deyimini verin:
BULK INSERT bulktest.dbo.t_float
FROM 'C:\t_float-c.dat'
WITH (FORMATFILE = 'C:\t_floatformat-c-xml.xml');
Önemli
Azure SQL Database ve Fabric Data Warehouse yalnızca URI'den (örneğin Azure Storage) okumayı destekler.
SQLXML belgelerini toplu dışarı veya içeri aktarmaya yönelik veri türleri
SQLXML verilerini toplu olarak dışarı veya içeri aktarmak için biçim dosyanızda aşağıdaki veri türlerinden birini kullanın:
| Veri türü | Etki |
|---|---|
| SQLCHAR veya SQLVARCHAR | Veriler, istemci kod sayfasında veya harmanlama tarafından ima edilen kod sayfasında gönderilir. Etkisi, bir biçim dosyası belirtmeden öğesini DATAFILETYPE = 'char' belirtmekle aynıdır. |
| SQLNCHAR veya SQLNVARCHAR | Veriler Unicode olarak gönderilir. Etkisi, bir biçim dosyası belirtmeden öğesini DATAFILETYPE = 'widechar' belirtmekle aynıdır. |
| SQLBINARY veya SQLVARBIN | Veriler dönüştürme olmadan gönderilir. |
Açıklamalar
Ifade BULK INSERT , ifade INSERT ... SELECT * FROM OPENROWSET(BULK...) ve bcp komutun karşılaştırması için Toplu Veri İçeri ve Dışa Aktarma bölümünü inceleyebilirsiniz.
Verileri toplu içeri aktarmaya hazırlama hakkında bilgi için bkz . Verileri toplu dışarı veya içeri aktarma için hazırlama.
Deyimi, BULK INSERT verileri tabloya veya görünüme aktarmak için kullanıcı tanımlı bir işlem içinde yürütülebilir. İsteğe bağlı olarak, verileri toplu içeri aktarmak için birden çok eşleşme kullanmak için bir işlem deyiminde yan tümcesini BATCHSIZEBULK INSERT belirtebilir. Birden çok toplu işlem geri alınırsa, SQL Server'a gönderilen her toplu işlem geri alınır.
Birlikte çalışabilirlik
CSV dosyasından verileri içeri aktarma
SQL Server 2017(14.x) BULK INSERT sürümünden başlayarak, Azure SQL Veritabanı gibi CSV biçimini de destekler.
SQL Server 2017 (14.x) öncesinde virgülle ayrılmış değer (CSV) dosyaları SQL Server toplu içeri aktarma işlemleri tarafından desteklenmez. Ancak bazı durumlarda, VERILERI SQL Server'a toplu olarak aktarmak için veri dosyası olarak bir CSV dosyası kullanılabilir. CSV veri dosyasından veri içeri aktarma gereksinimleri hakkında bilgi için bkz . Verileri toplu dışarı veya içeri aktarma için hazırlama.
Günlük davranışı
SQL Server'a toplu içeri aktarma ile gerçekleştirilen satır ekleme işlemlerinin işlem günlüğüne ne zaman kaydedildiği hakkında bilgi için bkz. Toplu içeri aktarmada minimum günlük kaydı için önkoşullar. Azure SQL Veritabanı'nda minimum günlük kaydı desteklenmez.
Sınırlamalar
ile BULK INSERTbir biçim dosyası kullanırken en fazla 1.024 alan belirtebilirsiniz. Bu, tabloda izin verilen en fazla sütun sayısıyla aynıdır. 1.024'ten fazla alan içeren bir veri dosyasıyla BULK INSERT bir biçim dosyası kullanırsanız, BULK INSERT 4822 hatasını oluşturur.
bcp yardımcı programının bu sınırlaması yoktur, bu nedenle 1.024'ten fazla alan içeren veri dosyaları için biçim dosyası olmadan kullanın BULK INSERT veya bcp komutunu kullanın.
Performansla ilgili dikkat edilmesi gerekenler
Tek bir toplu işlemde boşaltılacak sayfa sayısı iç eşiği aşarsa, toplu iş işlendiğinde hangi sayfaların boşaltılması gerektiğini belirlemek için arabellek havuzunun tam taraması oluşabilir. Bu tam tarama toplu içeri aktarma performansına zarar verebilir. Büyük bir arabellek havuzu yavaş G/Ç alt sistemiyle birleştirildiğinde iç eşiği aşma olasılığı oluşur. Büyük makinelerde arabellek taşmasını önlemek için ipucunu TABLOCK kullanmayın (toplu iyileştirmeleri kaldırır) veya daha küçük bir toplu iş boyutu kullanın (toplu iyileştirmeleri korur).
Sizin için en uygun olanı bulmak için veri yükünüzle çeşitli toplu iş boyutlarını test etmelisiniz. Toplu iş boyutunun kısmi geri alma etkileri olduğunu unutmayın. İşleminiz başarısız olursa ve yeniden kullanmadan BULK INSERT önce, hata oluşmadan önce başarıyla eklenen satırların bir bölümünü kaldırmak için el ile ek çalışmalar yapmanız gerekebilir.
Azure SQL Veritabanı ile, büyük miktarda veri içeri aktarıyorsanız içeri aktarma işleminden önce veritabanının veya örneğin performans düzeyini geçici olarak artırmayı göz önünde bulundurun.
Güvenlik
Güvenlik hesabı temsilcisi (kimliğe bürünme)
Bir kullanıcı SQL Server oturum açma bilgileri kullanıyorsa, SQL Server işlem hesabının güvenlik profili kullanılır. SQL Server kimlik doğrulaması kullanılarak oturum açma bilgilerinin kimliği Veritabanı Altyapısı dışında doğrulanamaz. Bu nedenle, SQL Server kimlik doğrulaması kullanılarak bir BULK INSERT komut oturum açma işlemiyle başlatıldığında, veri bağlantısı SQL Server işlem hesabının (SQL Server Veritabanı Altyapısı hizmeti tarafından kullanılan hesap) güvenlik bağlamı kullanılarak yapılır.
Kaynak verileri başarıyla okumak için SQL Server Veritabanı Altyapısı tarafından kullanılan hesaba kaynak verilere erişim vermelisiniz. Buna karşılık, 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ı tarafından erişilebilen dosyaları okuyabilir.
deyimini BULK INSERTbir bilgisayardan sqlcmd veya osql kullanarak yürütürken, ikinci bir bilgisayarda SQL Server'a veri eklerken ve UNC yolu kullanarak üçüncü bilgisayarda bir data_file belirtirken 4861 hatası alabilirsiniz.
Bu hatayı çö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 bilgisi belirtin veya Windows'un güvenlik hesabı temsilini etkinleştirecek şekilde yapılandırın. Kullanıcı hesabının temsilci seçme için güvenilir olmasını etkinleştirme hakkında bilgi için Windows Yardımı'na bakın.
Bu ve kullanımıyla BULK INSERTilgili diğer güvenlik konuları hakkında daha fazla bilgi için bkz . VERILERI SQL Server'a aktarmak için BULK INSERT veya OPENROWSET(BULK...) kullanma.
Azure Storage'dan aktarma yaparken ve veri açık (anonim erişim) değilse, veritabanı ana anahtarı (DMK) ile şifrelenmiş SAS anahtarına dayalı DATABASE SCOPED CREDENTIAL oluşturun ve ardından komutunuzda BULK INSERT kullanmak üzere harici bir veritabanı kaynağı oluşturun.
Alternatif olarak, genel olmayan depolama hesaplarında veri erişimine yönelik istekleri yetkilendirmeye dayalı MANAGED IDENTITY oluşturun. Kullanılırken MANAGED IDENTITY, Azure Storage örneğin yönetilen kimliğine izin vermelidir; bu görev, gerekli Azure Depolama konteynerleri için yönetilen kimliğe okuma/yazma erişimi sağlayan yerleşik Azure rol tabanlı erişim kontrol (RBAC) rolünü ekleyebilir. Azure SQL Yönetilen Örneği, sistem tarafından atanan yönetilen kimliğe sahiptir ve kullanıcı tarafından atanan bir veya daha fazla yönetilen kimliğe de sahip olabilir. İstekleri yetkilendirmek için, sistem tarafından atanan yönetilen kimlikleri veya kullanıcı tarafından atanan yönetilen kimlikleri kullanabilirsiniz. Yetkilendirme için yönetilen default örneğin kimliği (yani, birincil kullanıcı tarafından atanan yönetilen kimlik veya kullanıcı tarafından atanan yönetilen kimlik belirtilmezse sistem tarafından atanan yönetilen kimlik) kullanılır. Örneğin, Azure Storage içindeki bir dosyadan veri içe aktarma bölümünü görebilirsiniz.
Önemli
Managed Identity, Azure SQL ve SQL Server 2025 (17.x) ve sonraki sürümler için geçerlidir.
İzinler
Aşağıdaki izinler, verilerin toplu olarak içeri aktarıldığı konuma (hedef) uygulanır.
Gerekli ve INSERTADMINISTER BULK OPERATIONS izinler. Azure SQL Veritabanı'nda INSERT ve ADMINISTER DATABASE BULK OPERATIONS izinler gereklidir.
ADMINISTER BULK OPERATIONS izinleri veya bulkadmin rolü Linux üzerinde SQL Server için desteklenmez. Linux üzerinde SQL Server için yalnızca sysadmin toplu eklemeler gerçekleştirebilir.
Ayrıca, ALTER TABLE aşağıdaki koşullardan biri veya daha fazlası doğruysa izin gereklidir:
Kısıtlamalar var ve
CHECK_CONSTRAINTSseçenek belirtilmemiş.Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça denetlemek için seçeneğini kullanın
CHECK_CONSTRAINTS.Tetikleyiciler var ve
FIRE_TRIGGERseçenek belirtilmemiş.Varsayılan olarak tetikleyiciler tetiklenmez. Tetikleyicileri açıkça başlatmak için seçeneğini kullanın
FIRE_TRIGGER.Veri dosyasından
KEEPIDENTITYkimlik değerini içeri aktarmak için seçeneğini kullanırsınız.
Örnekler
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
Önemli
Azure SQL Database ve Fabric Warehouse yalnızca Azure Storage'dan okumayı destekler.
A. Dosyadan verileri içeri aktarmak için kanallar kullanma
Aşağıdaki örnek, alan sonlandırıcısı () ve AdventureWorks2022.Sales.SalesOrderDetail satır sonlandırıcısı olarak bir kanal (|) kullanarak belirtilen veri dosyasından tabloya sipariş ayrıntı bilgilerini |\n içeri aktarır.
BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH (FIELDTERMINATOR = ' |', ROWTERMINATOR = ' |\n');
B. FIRE_TRIGGERS bağımsız değişkenini kullanma
Aşağıdaki örnek bağımsız değişkeni belirtir FIRE_TRIGGERS .
BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM 'f:\orders\lineitem.tbl'
WITH (FIELDTERMINATOR = ' |', ROWTERMINATOR = ':\n', FIRE_TRIGGERS);
C. Satır sonlandırıcısı olarak satır akışı kullanma
Aşağıdaki örnek, unix çıkışı gibi satır sonlandırıcısı olarak satır akışını kullanan bir dosyayı içeri aktarır:
DECLARE @bulk_cmd AS VARCHAR (1000);
SET @bulk_cmd = 'BULK INSERT AdventureWorks2022.Sales.SalesOrderDetail
FROM ''<drive>:\<path>\<filename>''
WITH (ROWTERMINATOR = ''' + CHAR(10) + ''')';
EXECUTE (@bulk_cmd);
Uyarı
Windows'ta, \n ile otomatik olarak değiştirilir \r\n.
D. Kod sayfası belirtme
Aşağıdaki örnek, bir kod sayfasının nasıl belirtileceğini gösterir.
BULK INSERT MyTable
FROM 'D:\data.csv'
WITH (CODEPAGE = '65001', DATAFILETYPE = 'char', FIELDTERMINATOR = ',');
E. CSV dosyasından verileri içeri aktarma
Aşağıdaki örnekte, alan sonlandırıcı ve ; satır sonlandırıcı olarak kullanarak 0x0a üst bilgiyi (ilk satır) atlayarak CSV dosyasının nasıl belirtileceğini gösterilmektedir:
BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDQUOTE = '\',
FIELDTERMINATOR = ';',
ROWTERMINATOR = '0x0a'
);
Aşağıdaki örnekte, bir CSV dosyasının UTF-8 biçiminde nasıl belirtileceğini (öğesini kullanarak CODEPAGE65001), üst bilgiyi (ilk satır) atlayarak, alan sonlandırıcısı olarak ve ; satır sonlandırıcı olarak kullanmayı 0x0a gösterir:
BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (
CODEPAGE = '65001',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDQUOTE = '\',
FIELDTERMINATOR = ';',
ROWTERMINATOR = '0x0a'
);
F. Azure Storage'de bir dosyadan veri import et
Azure Storage'da bir CSV'den SAS token ile veri yükleyin
Aşağıdaki örnek, Paylaşılan Erişim İmzası (SAS) oluşturduğunuz Azure Depolama konumundaki bir CSV dosyasından veri nasıl yükleneceğini gösterir. Azure Depolama konumu, kullanıcı veritabanındaki DMK ile şifrelenmiş bir SAS anahtarı kullanılarak veritabanı kapsamlı bir kimlik doğrulaması gerektiren harici bir veri kaynağı olarak yapılandırılmıştır.
Uyarı
SAS token'ında bir lead ? olmadığınızı, yüklenmesi gereken nesne srt=o&sp=rüzerinde en azından okuma izniniz olduğundan ve bu son kullanma süresinin geçerli olduğundan emin olun (tüm tarihler UTC zamanında).
(İsteğe bağlı) A DATABASE SCOPED CREDENTIAL zorunlu değilse DMK gerekmez, çünkü blob halka açık (anonim) erişim için yapılandırılmıştır.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
(İsteğe bağlı) A DATABASE SCOPED CREDENTIAL gerekli değildir çünkü blob halka açık (anonim) erişim için yapılandırılmıştır.
SAS tokenına bir liderlik ? eklemeyin. Yüklenmesi gereken nesne üzerinde en azından okuma izniniz olduğundan emin olun (srt=o&sp=r), ve son kullanma süresinin geçerli olduğundan emin olun (tüm tarihler UTC zamanında).
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt = sco&sp = rwac&se = 2017-02-01T00:55:34Z&st = 2016-12-29T16:55:34Z***************';
Uyarı
CREDENTIAL Bir blob halka açık (anonim) erişim için yapılandırılmışsa zorunlu değildir.
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://****************.blob.core.windows.net/invoices',
CREDENTIAL = MyAzureBlobStorageCredential
);
BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (DATA_SOURCE = 'MyAzureBlobStorage');
Azure Storage'da bir CSV'den yönetilen bir kimlik ile veri yükleyin
Aşağıdaki örnek, Azure Depolama konumunda bir CSV dosyasından veri yüklemek için komutun nasıl kullanılacağını ve Yönetilen Kimlik kullanılarak kullanılacağını göstermektedir BULK INSERT . Azure Depolama konumu, harici bir veri kaynağı olarak yapılandırılmıştır.
(İsteğe bağlı) A DATABASE SCOPED CREDENTIAL zorunlu değilse DMK gerekmez, çünkü blob halka açık (anonim) erişim için yapılandırılmıştır.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
(İsteğe bağlı) A DATABASE SCOPED CREDENTIAL zorunlu değildir, çünkü blob halka açık (anonim) erişim için yapılandırılmıştır:
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'Managed Identity';
Gerekli Azure Storage konteynerleri için yönetilen kimliğe okuma/yazma erişimi sağlamak amacıyla Storage Blob Data Contributor rolünü ver.
Uyarı
CREDENTIAL Bir blob halka açık (anonim) erişim için yapılandırılmışsa zorunlu değildir.
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://****************.blob.core.windows.net/invoices',
CREDENTIAL = MyAzureBlobStorageCredential
);
BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (DATA_SOURCE = 'MyAzureBlobStorage');
Önemli
Yönetilen kimlik SQL Server 2025 (17.x) ve sonraki sürümler ile Azure SQL için geçerlidir.
G. Azure Storage'daki bir dosyadan veri içe aktarın ve bir hata dosyası belirtin
Aşağıdaki örnek, harici veri kaynağı olarak yapılandırılmış bir Azure Depolama konumunda bir CSV dosyasından veri nasıl yükleneceğini ve ayrıca bir hata dosyası belirtildiğini gösterir. Paylaşılan erişim imzası kullanarak veritabanı kapsamlı bir kimlik bilgilerine ihtiyacınız vardır. Azure SQL Veritabanı üzerinde çalışıyorsa, ERRORFILE seçeneğe , ile birlikte ERRORFILE_DATA_SOURCEgelmeli, aksi takdirde içe aktarma izin hatası ile başarısız olabilir. içinde ERRORFILE belirtilen dosya kapsayıcıda bulunmamalıdır.
BULK INSERT Sales.Invoices
FROM 'inv-2017-12-08.csv'
WITH (
DATA_SOURCE = 'MyAzureInvoices',
FORMAT = 'CSV',
ERRORFILE = 'MyErrorFile',
ERRORFILE_DATA_SOURCE = 'MyAzureInvoices'
);
Kimlik bilgilerinin ve harici veri kaynağının yapılandırılması gibi tam BULK INSERT örnekler için Azure Storage'da toplu veri erişimi örnekleri bölümünü inceleyebilirsiniz.
Diğer örnekler
Diğer BULK INSERT örnekler aşağıdaki makalelerde verilmiştir:
- XML belgelerinin toplu itiş ve dışına aktarma örnekleri
- Toplu veri içe aktarırken kimlik değerlerini korumak
- Toplu ithalat sırasında null veya varsayılan değerleri sakla
- Alan ve satır sonlandırıcılarını belirtin
- Veri toplu aktarmak için bir format dosyası kullanın
- Verileri içe veya dışa aktarmak için karakter formatını kullanın
- Veri içe veya dışa aktarmak için yerel format kullanın
- Verileri içe veya dışa aktarmak için Unicode karakter formatını kullanın
- Verileri İçe Aktarmak veya Dışa Aktarmak İçe Vermek İçin Unicode Yerel Formatını Kullanın
- Bir tablo sütununu atlamak için format dosyası kullanın
- Tablo sütunlarını veri dosyası alanlarına eşlemek için bir format dosyası kullanın