bcp yardımcı programı
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
SQL veritabanı Microsoft Fabric
Toplu kopyalama programı yardımcı programı (bcp) verileri Microsoft SQL Server örneği ile kullanıcı tarafından belirtilen biçimdeki bir veri dosyası arasında toplu olarak kopyalar.
Linux'ta
bcp yardımcı programı, çok sayıda yeni satırı SQL Server tablolarına aktarmak veya tabloların dışındaki verileri veri dosyalarına aktarmak için kullanılabilir.
queryout
seçeneğiyle kullanılması dışında yardımcı program Transact-SQL bilgisi gerektirmez. Verileri tabloya aktarmak için, bu tablo için oluşturulmuş bir biçim dosyası kullanmanız veya tablonun yapısını ve sütunları için geçerli olan veri türlerini anlamanız gerekir.
Not
Verilerinizi yedeklemek için bcp kullanıyorsanız, veri biçimini kaydetmek için bir biçim dosyası oluşturun. bcp veri dosyaları herhangi bir şema veya biçim bilgisi içermediğinden, bir tablo veya görünüm bırakıldığında ve bir biçim dosyanız yoksa verileri içeri aktaramayabilirsiniz.
Linux ve macOS'ta bcp için dikkate alınması gerekenler için bkz. Linux ve macOS üzerinde bcp ile ilgili önemli noktalar.
bcp yardımcı programının en son sürümünü indirme
Komut satırı araçları Genel Kullanılabilirlik (GA) aracıdır ancak SQL Server 2019 (15.x) ve sonraki sürümleri için yükleyici paketiyle birlikte yayımlanır.
SQL Server için ODBC Sürücüsünü İndirin
SQL Server (x64) için Microsoft Komut Satırı Yardımcı Programları 15'i İndirin
SQL Server (x86) için Microsoft Komut Satırı Yardımcı Programları 15'i İndirin
Sürüm bilgileri
- Sürüm numarası: 15.0.4298.1
- Derleme numarası: 15.0.4298.1
- Sürüm tarihi: 7 Nisan 2023
bcp, Azure SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı ve Azure Synapse Analytics için çok faktörlü kimlik doğrulaması (MFA) desteği de dahil olmak üzere Microsoft Entra kimlik doğrulamasını destekler.
Not
Microsoft Entra ID daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Sistem gereksinimleri
- Windows 8, Windows 8.1, Windows 10, Windows 11
- Windows Server 2016, Windows Server 2019, Windows Server 2022
Bu bileşen, SQL Serveriçin en son
bcp
Sözdizimi
bcp [database_name.] schema.{table_name | view_name | "query"}
{in data_file | out data_file | queryout data_file | format nul}
[-a packet_size]
[-b batch_size]
[-c]
[-C { ACP | OEM | RAW | code_page } ]
[-d database_name]
[-D]
[-e err_file]
[-E]
[-f format_file]
[-F first_row]
[-G Microsoft Entra authentication]
[-h"hint [,...n]"]
[-i input_file]
[-k]
[-K application_intent]
[-l login_timeout]
[-L last_row]
[-m max_errors]
[-n]
[-N]
[-o output_file]
[-P password]
[-q]
[-r row_term]
[-R]
[-S [server_name[\instance_name]]]
[-t field_term]
[-T]
[-U login_id]
[-u]
[-v]
[-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)]
[-w]
[-x]
[-Y[s|m|o]]
Dikkat edilmesi gerekenler ve sınırlamalar
- bcp yardımcı programı, hata iletisinin yalnızca 512 baytlık karakterleri göstermesiyle ilgili bir sınırlamaya sahiptir. Hata iletisinin yalnızca ilk 512 bayt değeri görüntülenir.
Linux ve macOS'ta bcp ile ilgili dikkat edilmesi gerekenler
Alan sonlandırıcısı bir sekmedir (
\t
).Satır sonlandırıcısı yeni bir satırdır (
\n
).Karakter modu, bcp biçim dosyaları ve genişletilmiş karakterler içermeyen veri dosyaları için tercih edilen biçimdir.
Komut satırı bağımsız değişkeninde ters eğik çizgi (
\
) ya tırnak içerisine alınmalı ya da kaçış karakteri kullanılmalıdır. Örneğin, özel satır sonlandırıcısı olarak yeni bir satır belirtmek için aşağıdaki mekanizmalardan birini kullanmanız gerekir:-r\\n
-r"\n"
-r'\n'
Komut satırı seçenekleri
Aşağıdaki tabloda, bcp'de kullanılabilen komut satırı seçenekleri ve hangi işletim sistemlerini destekledikleri listelenmiştir.
database_name
Belirtilen tablo veya görünümün bulunduğu veritabanının adı. Belirtilmezse, bu kullanıcı için varsayılan veritabanıdır.
Ayrıca, -d
ile veritabanı adını açıkça belirtebilirsiniz.
şema
Tablo veya görünümün sahibinin adı. şema, işlemi gerçekleştiren kullanıcı belirtilen tabloya veya görünüme sahipse isteğe bağlıdır. şema belirtilmezse ve işlemi gerçekleştiren kullanıcı belirtilen tablo veya görünüme sahip değilse, SQL Server bir hata iletisi döndürür ve işlem iptal edilir.
table_name
SQL Server'a veri aktarırken hedef tablonun adı (in
) ve SQL Server'dan veri dışarı aktarılırken kaynak tablo (out
).
view_name
SQL Server'a veri kopyalarken hedef görünümün adı (in
) ve SQL Server'dan veri kopyalarken kaynak görünümü (out
). Yalnızca tüm sütunların aynı tabloya başvuracağı görünümler hedef görünümler olarak kullanılabilir. Görünümlere veri kopyalama kısıtlamaları hakkında daha fazla bilgi için bkz.: INSERT.
"sorgu"
Sonuç kümesi döndüren bir Transact-SQL sorgusu. Sorgu birden çok sonuç kümesi döndürürse, veri dosyasına yalnızca ilk sonuç kümesi kopyalanır; sonraki sonuç kümeleri yoksayılır. Sorgunun çevresinde çift tırnak işaretleri ve sorguya eklenmiş her şeyin çevresinde tek tırnak işaretleri kullanın.
queryout
, bir sorgudan verileri toplu kopyalarken de belirtilmelidir.
Sorgu, saklı yordamın içinde başvurulan tüm tablolar mevcut olduğu sürece, bcp deyimini yürütmeden önce saklı yordama başvurabilir. Örneğin, saklı yordam bir geçici tablo oluşturursa, bcp ifadesi başarısız olur çünkü geçici tablo, yalnızca çalışma anında kullanılabilir ve ifade yürütme anında mevcut değildir. Bu durumda, saklı yordamın sonuçlarını bir tabloya eklemeyi ve ardından bcp kullanarak tablodaki verileri bir veri dosyasına kopyalamayı göz önünde bulundurun.
içinde
Bir dosyadan veritabanı tablosuna veya görünümüne verileri kopyalar. Toplu kopyalamanın yönünü belirtir.
dışarıya
Veritabanı tablosu veya görünümünden bir dosyaya kopyalar. Toplu kopyalamanın yönünü belirtir.
Mevcut bir dosya belirtirseniz, dosyanın üzerine yazılır. bcp yardımcı programı verileri ayıkladığında boş bir dizeyi null olarak, null dizeyi de boş dize olarak temsil eder.
data_file
Veri dosyasının tam yolu. Veriler SQL Server'a toplu olarak aktarıldığında, veri dosyası belirtilen tabloya veya görünüme kopyalanacak verileri içerir. Veriler SQL Server'dan toplu olarak dışarı aktarıldığında, veri dosyası tablo veya görünümden kopyalanan verileri içerir. Yol 1 ile 255 karakter arasında olabilir. Veri dosyası en fazla 2^63 - 1 satır içerebilir.
sorgu çıktısı
Bir sorgudan kopyalar ve yalnızca sorgudan verileri toplu olarak kopyalarken belirtilmelidir.
biçim
Belirtilen seçeneğe (-n
, -c
, -w
veya -N
) ve tablo veya görünüm sınırlayıcılarına göre bir biçim dosyası oluşturur. Verileri toplu olarak kopyalarken, bcp komutu bir biçim dosyasına başvurabilir ve bu da sizi biçim bilgilerini etkileşimli olarak yeniden girişten kurtarır.
format
seçeneği -f
seçeneğini gerektirir; BIR XML biçim dosyası oluşturmak için -x
seçeneği de gerekir. Daha fazla bilgi için bkz. Biçim Dosyası Oluşturma (SQL Server). değer olarak nul
belirtmelisiniz (format nul
).
-a paket_büyüklüğü
Sunucuya gönderilen ve sunucudan gönderilen ağ paketi başına bayt sayısını belirtir. Sunucu yapılandırma seçeneği, SQL Server Management Studio (veya sp_configure
sistem saklı yordamı) kullanılarak ayarlanabilir. Ancak, sunucu yapılandırma seçeneği bu seçenek kullanılarak tek tek geçersiz kılınabilir.
packet_size 4.096 bayttan 65.535 bayta kadar olabilir; varsayılan değer 4096
' dir.
Artan paket boyutu, toplu kopyalama işlemlerinin performansını artırabilir. Daha büyük bir paket istenirse ancak verilemiyorsa, varsayılan değer kullanılır. bcp yardımcı programı tarafından oluşturulan performans istatistikleri, kullanılan paket boyutunu gösterir.
-b batch_size
İçeri aktarılan verilerin toplu işlemi başına satır sayısını belirtir. Her toplu işlem, tamamı taahhüt edilmeden önce ayrı bir işlem olarak içeri aktarılır ve kayıt edilir. Varsayılan olarak, veri dosyasındaki tüm satırlar tek bir toplu işlem olarak içeri aktarılır. Satırları birden çok toplu iş arasında dağıtmak için, veri dosyasındaki satır sayısından daha küçük bir batch_size belirtin. Herhangi bir toplu işlem için işlem başarısız olursa, yalnızca ilgili toplu işlemden eklemeler geri alınacaktır. Tamamlanmış işlemler tarafından zaten içeri aktarılan veri kümeleri, sonraki bir hatadan etkilenmez.
Bu seçeneği -h "ROWS_PER_BATCH=<bb>"
seçeneğiyle kullanmayın.
-c
bir karakter veri türü kullanarak işlemi gerçekleştirir. Bu seçenek her alan için bir uyarı vermez; depolama tipi olarak karakter'i, ön ekleri olmadan ve alan ayırıcı olarak \t
(sekme karakteri) ve satır sonlandırıcı olarak \r\n
(yeni satır karakteri) kullanır.
-c
-w
ile uyumlu değildir.
Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için karakter biçimini kullanma (SQL Server).
-C { ACP | OEM | RAW | code_page }
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Veri dosyasındaki verilerin kod sayfasını belirtir. code_page yalnızca veri karakter, varcharveya 127'den büyük ya da 32'den küçük karakter değerlerine sahip metin sütunları olduğunda ilgilidir.
65001 seçeneğinin harmanlama/kod sayfası belirtimine göre önceliğe sahip olmasını istemeniz dışında, biçim dosyasındaki her sütun için bir harmanlama adı belirtmeniz gerekir.
Kod sayfası değeri | Açıklama |
---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252). |
OEM |
İstemci tarafından kullanılan varsayılan kod sayfası. bu, -C belirtilmezse kullanılan varsayılan kod sayfasıdır. |
RAW |
Bir kod sayfasından diğerine dönüştürme gerçekleşmez. Bu en hızlı seçenektir çünkü dönüştürme gerçekleşmez. |
<code_page> |
Belirli kod sayfası numarası; örneğin, 850. Sürüm 13 (SQL Server 2016 (13.x)) öncesi sürümler, 65001 (UTF-8 kodlama) kod sayfasını desteklemez. 13 ile başlayan sürümler, UTF-8 kodlamasını SQL Server'ın önceki sürümlerine aktarabilir. |
-d database_name
Bağlanacak veritabanını belirtir. Varsayılan olarak, bcp kullanıcının varsayılan veritabanına bağlanır.
-d <database_name>
ve üç parçalı bir ad (database_name.schema.table, bcp) için ilk parametre olarak geçirilirse, veritabanı adını iki kez belirtemediğiniz için bir hata oluşur.
database_name kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -d
ve veritabanı adı arasına boşluk eklemeyin.
-D
bcp -S
seçeneğine geçirilen değerin veri kaynağı adı (DSN) olarak yorumlanmasına neden olur.
DSN şu işlemleri yapmak için kullanılabilir:
- komut satırlarını basitleştirmek için sürücü seçeneklerini ekleme,
- MultiSubnetFailover gibi komut satırından erişilmeyecek sürücü seçeneklerini zorunlu kılma,
- veya hassas kimlik bilgilerinin komut satırı bağımsız değişkenleri olarak bulunabilmesini önleyebilirsiniz.
Daha fazla bilgi için bkz. sqlcmd'de DSN Desteği ve sqlcmdile bağlanma konusundaki bcp.
-e err_file
bcp yardımcı programının dosyadan veritabanına aktaramayan satırları depolamak için kullanılan hata dosyasının tam yolunu belirtir. bcp komutundan gelen hata iletileri kullanıcının iş istasyonuna gider. Bu seçenek kullanılmıyorsa bir hata dosyası oluşturulmaz.
err_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -e
ile err_file değeri arasında boşluk eklemeyin.
-E
İçeri aktarılan veri dosyasındaki kimlik değerinin veya değerlerinin kimlik sütunu için kullanılacağını belirtir.
-E
belirtilmemişse, içeri aktarılan veri dosyasındaki bu sütunun kimlik değerleri yoksayılır ve SQL Server tablo oluşturma sırasında belirtilen başlangıç ve artış değerlerine göre otomatik olarak benzersiz değerler atar. Daha fazla bilgi için bkz. DBCC CHECKIDENT
Veri dosyası tablo veya görünümdeki kimlik sütunu için değerler içermiyorsa, verileri içeri aktarı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.
-E
seçeneğinin özel bir izin gereksinimi vardır. Daha fazla bilgi için, bu makalenin devamında yer alan "Açıklamalar" bölümüne bakın.
-f format_file
Biçim dosyasının tam yolunu belirtir. Bu seçeneğin anlamı, kullanıldığı ortama bağlıdır, aşağıdaki gibi:
-f
format
seçeneğiyle kullanılırsa, belirtilen tablo veya görünüm için belirtilen format_file oluşturulur. XML biçim dosyası oluşturmak için-x
seçeneğini de belirtin. Daha fazla bilgi için bkz. Biçim Dosyası Oluşturma (SQL Server).in
veyaout
seçeneğiyle kullanıldığında,-f
mevcut bir biçim dosyası gerektirir.Not
in
veyaout
seçeneğiyle bir biçim dosyası kullanmak isteğe bağlıdır.-f
seçeneğinin olmaması durumunda,-n
,-c
,-w
veya-N
belirtilmezse, komut biçim bilgilerini ister ve yanıtlarınızı bir biçim dosyasına kaydetmenize olanak tanır (varsayılan dosya adıbcp.fmt
).
format_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -f
ile format_file değeri arasında boşluk eklemeyin.
-F ilk_sıra
Bir tablodan dışarı aktarılacağını veya veri dosyasından içeri aktarılacağını belirten ilk satırın sayısını belirtir. Bu parametre, (>
) 0'dan büyük fakat (<
)'den küçük veya toplam satır sayısına eşit (=
) bir değer gerektirir. Bu parametre olmadığında, varsayılan değer dosyanın ilk satırıdır.
first_row değeri 2^63-1'e kadar olan pozitif bir tamsayı olabilir.
-F
first_row 1 tabanlıdır.
-G
Şunlar için geçerlidir: Azure SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı ve yalnızca Azure Synapse Analytics.
Bu anahtar, istemci tarafından kullanıcının Microsoft Entra ID ile doğrulandığını belirtmek için kullanılır.
-G
anahtarı, sürüm 14.0.3008.27 veya sonraki sürümleri gerektirir. Sürümünüzü belirlemek için bcp -v
komutunu çalıştırın. Daha fazla bilgi için bkz.
Önemli
Linux ve macOS'ta Microsoft Entra etkileşimli kimlik doğrulaması şu anda desteklenmiyor. Microsoft Entra tümleşik kimlik doğrulaması, SQL Server sürüm 17.6.1 ve sonraki sürümleri için
bcp sürümünüzün Microsoft Entra kimlik doğrulaması desteği içerip içermediğini denetlemek için bcp --help
yazın ve kullanılabilir bağımsız değişkenler listesinde -G
gördüğünüzden emin olun.
Microsoft Entra kullanıcı adı ve parola
Microsoft Entra kullanıcı adı ve parolasını kullanmak istediğinizde,
-G
seçeneğini sağlayabilir ve ayrıca-U
ve-P
seçeneklerini sağlayarak kullanıcı adı ve parolayı kullanabilirsiniz.Aşağıdaki örnek, Microsoft Entra kullanıcı adı ve parola kimlik bilgilerini kullanarak verileri dışarı aktarır. Örnek, Azure sunucusu
bcptest
'deki veritabanıtestdb
'den tabloaadserver.database.windows.net
'ı dışarı aktarır ve verileric:\last\data1.dat
dosyasında depolar.bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Aşağıdaki örnek, bir Microsoft Entra kullanıcısının kimlik bilgilerini kullanarak verileri içeri aktarır. Microsoft Entra kullanıcı adı ve parolası kullanılarak, Azure sunucusu
c:\last\data1.dat
üzerindeki veritabanıbcptest
'ye, dosyatestdb
'dan tabloaadserver.database.windows.net
'e veri aktarılır.bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Microsoft Entra entegrasyonu
Microsoft Entra tümleşik kimlik doğrulaması için kullanıcı adı veya parola olmadan
-G
seçeneğini belirtin. Bu yapılandırma, geçerli Windows kullanıcı hesabının (bcp komutunun altında çalıştığı hesap) Microsoft Entra Id ile federasyona eklenmesini gerektirir:Aşağıdaki örnek, Microsoft Entra tümleşik kimlik doğrulamasını kullanarak verileri dışarı aktarır. Örnek,
bcptest
mantıksal sunucusundakitestdb
veritabanındanaadserver.database.windows.net
tablosunu dışa aktarır ve Microsoft Entra ID ile birleştirilmiş Windows kimlik bilgilerini kullanarak verileric:\last\data2.dat
dosyasında depolar.bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Aşağıdaki örnek, Microsoft Entra tümleşik kimlik doğrulamasını kullanarak verileri içeri aktarır. Örnek, Microsoft Entra ID ile birleştirilmiş Windows kimlik bilgilerini kullanarak dosya tablosu
c:\last\data2.dat
'dan, mantıksal sunucubcptest
'teki veritabanıtestdb
'de bulunan tabloaadserver.database.windows.net
'e veri aktarır.bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Microsoft Entra Yönetilen Hizmet Kimliği
Önemli
bcp sürücüyle sıkı bir şekilde ilişkilendirilir. Hem bcp hem de DSN'nin oluşturulduğu sürücünün ana sürümleri aynı olmalıdır. Sürümünüzü belirlemek için
bcp -v
komutunu çalıştırın.Windows'ta Yönetilen Hizmet Kimliği kullanarak bcp aracılığıyla veri dışarı aktarmak için DSN'nin yapılandırılması gerekir.
Windows çalıştıran bir makinede DSN yapılandırmak için:
Klavyenizde Windows tuşuna basın
ODBC
yazın ve ODBC Veri Kaynağı Yöneticisi uygun sürümünü seçinKullanıcı DSN veya Sistem DSN sekmesini seçin
Ekle'yi seçin ve istemleri izleyin
Kimlik doğrulama türü istendiğinde Azure Yönetilen Hizmet Kimliği kimlik doğrulaması seçin.
Kullanıcı Tarafından Atanan Yönetilen Kimliğiniz varsa kimlik doğrulaması sekmesinin alt kısmındaki
Object (principal) ID
kutusuna kimliğin yapıştırınDSN'nizi yapılandırmak için istemleri takip etmeye devam edin.
Ekran görüntüleri de dahil olmak üzere tam bir izlenecek yol için bkz. Kullanıcı arabiriminde DSN oluşturma ve düzenleme.
DSN yapılandırıldıktan sonra bcp,
-D
için geçirilen değerin bir DSN olduğunu belirtmek üzere-S
bayrağı kullanılarak çağrılabilir.bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
Microsoft Entra ID erişim belirteci
Şunlar için geçerlidir: yalnızca Linux ve macOS. Windows desteklenmez.
Linux ve macOS'ta bcp 17.8 ve üzeri sürümlerin kullanıcıları da belirteçle kimlik doğrulaması yapabilir. Aşağıdaki örneklerde, bir erişim belirteci almak için Linux
PowerShell kullanılır. Bu örnek, bir erişim belirtecini alır ve sistem tarafından atanan yönetilen kimliği kullanarak verileri dışarı aktarmak için bir dosyaya yerleştirir.
Connect-AzAccount -Identity $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Bu örnek, erişim belirtecini almak ve belirteç dosyasına yerleştirmek için
Client ID
'ı-AccountId
'ninConnect-AzAccount
parametresine geçirir. Belirteç daha sonra belirtilen Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanılarak verileri dışarı aktarmak için kullanılır.Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity' $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Microsoft Entra etkileşimli
Şunlar için geçerlidir: yalnızca Windows'. Linux ve macOS desteklenmez.
Tüm Azure SQL ve SQL Server 2022 (16.x) ve sonraki sürümlerde kullanılabilen Microsoft Entra etkileşimli kimlik doğrulaması, kimlik doğrulaması için etkileşimli bir iletişim kutusu kullanmanıza olanak tanır ve bu da çok faktörlü kimlik doğrulamasını destekler.
Microsoft Entra etkileşimli kimlik doğrulaması, bcpsürüm 15.0.1000.34 veya daha yenisini ve ODBC sürüm 17.2 veya daha yeni bir sürümügerektirir.
Etkileşimli kimlik doğrulamasını etkinleştirmek için yalnızca kullanıcı adı (
-G
) içeren ve parola içermeyen-U
seçeneğini belirtin.Aşağıdaki örnek, Microsoft Entra hesabının kullanıcı adını belirtmeyi içeren Microsoft Entra etkileşimli kimlik doğrulamasını kullanarak verileri dışarı aktarır.
Etkileşimli mod için el ile parola girilmesi gerekir veya çok faktörlü kimlik doğrulaması etkinleştirilmiş hesaplar için yapılandırılan MFA kimlik doğrulama yönteminizi tamamlayın.
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
Federasyon etki alanından bir Windows hesabı olan bir Microsoft Entra kullanıcısı kullanıyorsanız, komut satırına girilen kullanıcı adı etki alanını içermelidir (örneğin,
joe@contoso.com
):bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
Konuk kullanıcılar belirli bir Microsoft Entra kiracısında bulunuyorsa ve bcp komutunu yürütmek için veritabanı izinlerine sahip Azure SQL Veritabanı'nda bulunan bir grubun parçasıysa, konuk kullanıcı diğer adları kullanılır (örneğin,
keith0@adventure-works.com
).
-h "ipuçları [, ... n]"
Sadece Windows için geçerlidir. Linux ve macOS'ta desteklenmez.
Verilerin bir tabloya veya görünüme toplu içeri aktarılması sırasında kullanılacak ipucunu veya ipuçlarını belirtir.
ORDER (sütun [ASC | DESC] [, ...n])
Veri dosyasındaki verilerin sıralama düzeni. İç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 farklı bir düzende sıralanmışsa veya tabloda kümelenmiş dizin yoksa,
ORDER
yan tümcesi yoksayılır. Sağlanan sütun adları, hedef tabloda geçerli sütun adları olmalıdır. Varsayılan olarak, bcp 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.ROWS_PER_BATCH = bb
Küme başına veri satırlarının sayısı (bb).
-b
belirtilmediğinde kullanılır ve veri dosyasının tamamı tek bir işlem olarak sunucuya gönderilir. Sunucu, bbdeğerine göre toplu yüklemeyi iyileştirir. Varsayılan olarak,ROWS_PER_BATCH
bilinmiyor.KILOBYTES_PER_BATCH = cc
Toplu iş başına yaklaşık kilobayt veri sayısı (cc). Varsayılan olarak,
KILOBYTES_PER_BATCH
bilinmiyor.TABLOCK
Toplu yükleme işlemi sırasında tablo düzeyinde toplu güncelleştirme kilidinin alındığını belirtir; aksi takdirde, satır düzeyi kilit alınır. Toplu kopyalama işlemi sırasında kilit tutmak tablodaki kilit çekişmesini azalttığı için bu ipucu performansı önemli ölçüde artırır. Tabloda dizin yoksa ve
TABLOCK
belirtilirse, tablo birden çok istemciden eşzamanlı olarak yüklenebilir. Varsayılan olarak, kilitleme davranışıtable lock on bulkload
tablo seçeneği tarafından belirlenir. Daha fazla bilgi için bkz. sp_tableoption.Not
Hedef tablo bir kümelenmiş columnstore indeksine sahipse, dizin içinde her eşzamanlı iş parçacığına ayrı bir satır grubu atandığından ve veriler bu gruplara yüklendiğinden, birden fazla eşzamanlı istemci tarafından yükleme yapmak için
TABLOCK
ipucuna gerek yoktur. Daha fazla bilgi için bkz. Columnstore dizinleri: Genel Bakış.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
ipucu olmadan,CHECK
veFOREIGN KEY
kısıtlamaları yoksayılır ve işlemden sonra tablodaki kısıtlama güvenilir değil olarak işaretlenir.Not
UNIQUE
,PRIMARY KEY
veNOT NULL
kısıtlamaları her zaman uygulanır.Bir noktada tablonun tamamında kısıtlamaları denetlemeniz gerekir. Tablo toplu içeri aktarma işleminden önce boş değilse, kısıtlamayı yeniden doğrulamanın maliyeti artımlı verilere
CHECK
kısıtlamaları uygulama maliyetini aşabilir. Bu nedenle, normalde artımlı toplu içeri aktarma sırasında kısıtlama denetimini etkinleştirmenizi öneririz.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çerli olmayan verileri kaldırmak için Transact-SQL deyimlerini kullanabilirsiniz.bcp artık veri dosyasındaki geçersiz verilerde yürütülürlerse betiklerin başarısız olmasına neden olabilecek veri doğrulama ve veri denetimlerini zorunlu tutuyor.
Not
-m
max_errors ayarı kısıtlama denetimi için geçerli değildir.ATEŞLEYİCİLER
Bu seçeneği bağımsız değişkenindeki belirttiğinizde, hedef tabloda tanımlanan tüm ekleme tetikleyicileri toplu kopyalama işlemi sırasında çalıştırılır.
FIRE_TRIGGERS
belirtilmezse, hiçbir ekleme tetikleyicisi çalıştırılamaz.FIRE_TRIGGERS
,out
,queryout
veformat
bağımsız değişkenleri için göz ardı edilir.
-i input_file
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Etkileşimli mod (-n
, -c
, -w
veya -N
belirtilmemiş) kullanılarak toplu kopyalama gerçekleştirilirken her veri alanı için komut istemi sorularının yanıtlarını içeren yanıt dosyasının adını belirtir.
input_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -i
ile input_file değeri arasında boşluk eklemeyin.
-k
Eklenen sütunlar için varsayılan değerler yerine, işlem sırasında boş sütunların null değer tutması gerektiğini belirtir. Daha fazla bilgi için bkz. Toplu içeri aktarma sırasında null değerleri veya varsayılan değerleri tutma (SQL Server).
-K uygulama_niyeti
Sunucuya bağlanırken uygulama iş yükü türünü bildirir. Mümkün olan tek değer ReadOnly
.
-K
belirtilmezse, bcp yardımcı programı, Always On kullanılabilirlik grubu içindeki ikincil replika ile bağlantı kurma yeteneğini desteklemez. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubunun ikincil çoğaltmasına salt okunur iş yükünü boşaltma.
-l oturum_zaman_aşımı
Oturum açma zaman aşımını belirtir.
-l
seçeneği, bir sunucuya bağlanmaya çalıştığınızda SQL Server'da oturum açma işleminin zaman aşımına uğramadan önce geçmesi gereken saniye sayısını belirtir. Varsayılan oturum açma zaman aşımı 15 saniyedir. Oturum açma zaman aşımı 0 ile 65534 arasında bir sayı olmalıdır. Sağlanan değer sayısal değilse veya bu aralığa girmiyorsa bcp bir hata iletisi oluşturur. 0 değeri sonsuz bir zaman aşımı belirtir.
-L son_sıra
Bir tablodan dışarı aktarılacak veya veri dosyasından içeri aktarılacak son satırın sayısını belirtir. Bu parametre, (>
) 0'dan büyük, ancak (<
) 'den küçük veya (=
) son satırın sayısına eşit bir değer gerektirir. Bu parametre olmadığında, varsayılan değer dosyanın son satırıdır.
last_row değeri 2^63-1'e kadar olan pozitif bir tamsayı olabilir.
-m maksimum_hatalar
bcp işlemi iptal edilmeden önce oluşabilecek en fazla söz dizimi hatası sayısını belirtir. Söz dizimi hatası, hedef veri türüne veri dönüştürme hatası anlamına gelir. max_errors toplamı, kısıtlama ihlalleri gibi yalnızca sunucuda algılanabilir hataları dışlar.
Bir satır, bcp aracı tarafından kopyalanamazsa, yoksayılır ve bir hata olarak sayılır. Bu seçenek dahil değilse, varsayılan değer 10'dur.
Not
-m
seçeneği, para veya bigint veri türlerini dönüştürmek için de geçerli değildir.
-n
Verilerin yerel (veritabanı) veri türlerini kullanarak toplu kopyalama işlemini gerçekleştirir. Bu seçenek her alanı sormaz; yerel değerleri kullanır.
Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server).
-N
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Toplu kopyalama işlemini, özel olmayan veriler için verilerin yerel (veritabanı) veri türlerini ve karakter verileri için Unicode karakterlerini kullanarak gerçekleştirir. Bu seçenek, -w
seçeneğine daha yüksek bir performans alternatifi sunar ve veri dosyası kullanarak bir SQL Server örneğinden diğerine veri aktarmak için tasarlanmıştır. Her alan için uyarı vermiyor. ANSI genişletilmiş karakterleri içeren verileri aktarırken ve yerel modun performansından yararlanmak istediğinizde bu seçeneği kullanın.
Daha fazla bilgi için bkz. Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimini Kullanma (SQL Server).
ile -N
kullanarak verileri dışarı ve sonra da aynı tablo şemasına aktarırsanız, sabit uzunlukta, Unicode olmayan bir karakter sütunu varsa (örneğin, char(10)) kesme uyarısı görebilirsiniz.
Uyarı göz ardı edilebilir. Bu uyarıyı çözmenin bir yolu, -n
yerine -N
kullanmaktır.
-o çıktı_dosyası
Şunlar için geçerlidir: Windows yalnızca. Linux ve macOS'ta desteklenmez.
Komut isteminden yeniden yönlendirilen çıkışı alan dosyanın adını belirtir.
output_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -o
ile output_file değeri arasında boşluk eklemeyin.
-P parola
Oturum açma kimliğinin parolasını belirtir. Bu seçenek kullanılmazsa, bcp komutu parola ister. Komut isteminin sonunda parola olmadan bu seçenek kullanılıyorsa, bcp varsayılan parolayı (NULL
) kullanır.
Önemli
Boş parola kullanmayın. Güçlü bir parola kullanın.
Parolanızı maskeleyebilmek için -P
seçeneğiyle birlikte -U
seçeneğini belirtmeyin. Bunun yerine, -U
seçeneği ve diğer anahtarlarla (-P
belirtmeyin) bcp belirttikten sonra Enter tuşuna basın; komut sizden parola ister. Bu yöntem, girildiğinde parolanızın maskelenmiş olmasını sağlar.
parola kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -P
ile parola değeri arasına boşluk eklemeyin.
-q
bcp yardımcı programı ile SQL Server örneği arasındaki bağlantıda SET QUOTED_IDENTIFIER ON
deyimini yürütür. Boşluk veya tek tırnak işareti içeren bir veritabanı, sahip, tablo veya görünüm adı belirtmek için bu seçeneği kullanın. Üç bölümlü tablonun veya görünüm adının tamamını tırnak içine alın (""
).
Boşluk veya tek tırnak işareti içeren bir veritabanı adı belirtmek için -q
seçeneğini kullanmanız gerekir.
-q
-d
geçirilen değerlere uygulanmaz.
Daha fazla bilgi için bu makaledeki Açıklamalar bölümüne bakın.
-r satır_terimi
Satır sonlandırıcısını belirtir. Varsayılan değer \n
(yeni satır karakteri). Varsayılan satır sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın. Daha fazla bilgi için bkz. Alan ve Satır Sonlandırıcıları Belirtme (SQL Server).
Satır sonlandırıcısını bir bcp komutunda onaltılık gösteriminde belirtirseniz, değer 0x00
olarak kısaltılır. Örneğin, 0x410041
belirtirseniz 0x41
kullanılır.
row_term kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -r
ile row_term değeri arasında boşluk eklemeyin.
-R
Para birimi, tarih ve saat verilerinin istemci bilgisayarın yerel ayarı için tanımlanan bölgesel biçim kullanılarak SQL Server'a toplu olarak kopyalandığını belirtir. Varsayılan olarak bölgesel ayarlar dikkate alınmaz.
-S [sunucu_adı[\örnek_adı]]
Bağlanacak SQL Server örneğinin adını veya -D
kullanılırsa bir DSN belirtir.
Sunucu belirtilmezse, bcp yardımcı programı yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Bu seçenek, bir bcp komutu ağdaki uzak bir bilgisayardan veya yerel adlandırılmış bir örnekten çalıştırıldığında gereklidir. Bir sunucudaki varsayılan SQL Server örneğine bağlanmak için yalnızca server_namebelirtin. SQL Server'ın adlandırılmış bir örneğine bağlanmak için server_name**\**instance_namebelirtin.
-t field_term
Alan sonlandırıcısını belirtir. Varsayılan değer \t
(sekme karakteri) değeridir. Varsayılan alan sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın. Daha fazla bilgi için bkz. Alan ve Satır Sonlandırıcıları Belirtme (SQL Server).
bcp komutunda alan sonlandırıcısını onaltılık gösterimle belirtirseniz, değer 0x00
konumunda kesilir. Örneğin, 0x410041
belirtirseniz 0x41
kullanılır.
field_term kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -t
ile field_term değeri arasında boşluk eklemeyin.
-T
bcp yardımcı programının tümleşik güvenlik kullanarak güvenilir bir bağlantıyla SQL Server'a bağlandığını belirtir. Ağ kullanıcısı, login_idve parola güvenlik kimlik bilgileri gerekli değildir.
-T
belirtilmezse, başarıyla bağlanmak için -U
ve -P
belirtmeniz gerekir.
Önemli
bcp yardımcı programı entegre güvenlik kullanarak güvenilir bir bağlantıyla SQL Server'a bağlanırken, -T
ve parola kombinasyonu yerine seçeneğini (güvenilen bağlantı) kullanın.
bcp yardımcı programı SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanırken Windows kimlik doğrulaması veya Microsoft Entra kimlik doğrulaması desteklenmez.
-U
ve -P
seçeneklerini kullanın.
-U login_id
SQL Server'a bağlanmak için kullanılan oturum açma kimliğini belirtir.
-u
Şunlar için geçerlidir: bcp sürüm 18 ve sonraki sürümler için yalnızca Linux ve macOS. Windows'da desteklenmez.
Sunucu sertifikasına güven.
-v
bcp yardımcı program sürüm numarasını ve telif hakkını bildirir.
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 }
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
SQL Server'ın önceki bir sürümündeki veri türlerini kullanarak toplu kopyalama işlemini gerçekleştirir. Bu seçenek her alanı sormaz; varsayılan değerleri kullanır.
-
80
= SQL Server 2000 (8.x) -
90
= SQL Server 2005 (9.x) -
100
= SQL Server 2008 (10.0.x) ve SQL Server 2008 R2 (10.50.x) -
110
= SQL Server 2012 (11.x) -
120
= SQL Server 2014 (12.x) -
130
= SQL Server 2016 (13.x) -
140
= SQL Server 2017 (14.x) -
150
= SQL Server 2019 (15.x) -
160
= SQL Server 2022 (16.x)
Örneğin, SQL Server 2000 (8.x) tarafından desteklenmeyen ancak SQL Server'ın sonraki sürümlerinde kullanıma sunulan türler için veri oluşturmak için -V80
seçeneğini kullanın.
Daha fazla bilgi için bkz. SQL Server'ın önceki sürümlerinden yerel ve karakter biçimi verilerini içeri aktarma.
-w
Unicode karakterleri kullanarak toplu kopyalama işlemini gerçekleştirir. Bu seçenek her alan için kullanıcıdan onay istemez; depolama türü olarak nchar, ön ek yok, alan ayırıcısı olarak \t
(sekme karakteri) ve satır sonlandırıcı olarak \n
(yeni satır karakteri) kullanır.
-w
-c
ile uyumlu değildir.
Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için unicode karakter biçimini kullanma (SQL Server).
-x
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Bu seçenek format
ve -f
format_file seçenekleriyle birlikte kullanılır ve varsayılan XML olmayan biçim dosyası yerine XML tabanlı bir biçim dosyası oluşturur. verileri içeri veya dışarı aktarırken -x
çalışmaz. hem format
hem de -f
format_fileolmadan kullanıldığında bir hata oluşturur.
-Y[s|m|o]
Şunlar için geçerlidir: bcp sürüm 18 ve sonraki sürümler için yalnızca Linux ve macOS. Windows'da desteklenmez.
Bağlantı şifreleme modunu belirtir. Seçenekler Sıkı, Zorunlu ve İsteğe Bağlı.
-Y
parametresiz kullanıldığında Zorunlu şifreleme modu kullanılır ve -Ym
ile eşdeğerdir.
Açıklamalar
bcp 13.0 istemcisi, Microsoft SQL Server 2019 (15.x) araçlarını yüklediğinizde yüklenir. SQL Server'ın birden çok sürümü için araçlar yüklüyse,
PATH
ortam değişkeninin değerlerinin sırasına bağlı olarak, bcp 13.0 istemcisi yerine önceki bcp istemcisini kullanıyor olabilirsiniz. Bu ortam değişkeni, Yürütülebilir dosyaları aramak için Windows tarafından kullanılan dizin kümesini tanımlar. Hangi sürümü kullandığınızı bulmak için Windows Komut İstemi'ndebcp -v
komutunu çalıştırın.PATH
ortam değişkeninde komut yolunu ayarlama hakkında bilgi için Windows Yardımı'nda Ortam Değişkenleri veya Ortam Değişkenleri'ni arayın.bcp yardımcı programının en yeni sürümünün çalıştığından emin olmak için, bcp yardımcı programının eski sürümlerini kaldırmanız gerekir.
bcp yardımcı programının tüm sürümlerinin nereye yüklendiğini belirlemek için komut istemine yazın:
where bcp.exe
bcp yardımcı programı, Microsoft SQL Server 2016 Özellik Paketi'ndan ayrı olarak da indirilebilir.
ENU\x64\MsSqlCmdLnUtils.msi
veyaENU\x86\MsSqlCmdLnUtils.msi
seçin.XML biçim dosyaları yalnızca SQL Server araçları SQL Server Yerel İstemcisi ile birlikte yüklendiğinde desteklenir.
bcp yardımcı programının nerede bulunacağı veya nasıl çalıştırıldığı ve komut istemi yardımcı programları söz dizimi kuralları hakkında bilgi için bkz.SQL Komut İstemi Yardımcı Programları (Veritabanı Altyapısı). Verileri toplu içeri veya dışarı aktarma işlemleri için hazırlama hakkında bilgi için bkz. Verileri toplu dışarı veya içeri aktarma için hazırlama.
Toplu içeri aktarma tarafından gerçekleştirilen satır ekleme işlemlerinin işlem günlüğüne ne zaman kaydedildiği hakkında bilgi için Toplu İçeri Aktarmada Minimum Günlük Kaydı İçin Önkoşullar başlığına bakın.
Ekstra özel karakterler kullanma
<
,>
,|
,&
ve^
karakterleri özel komut kabuğu karakterleridir ve bunların önünde kaçış karakteri (^
) bulunmalıdır, veya string içinde kullanıldığında tırnak içine alınmalıdır (örneğin,"StringContaining&Symbol"
). Özel karakterlerden birini içeren bir dizeyi içine almak için tırnak işaretleri kullanırsanız, tırnak işaretleri ortam değişkeni değerinin bir parçası olarak ayarlanır.
Yerel veri dosyası desteği
SQL Server'da bcp yardımcı programı, SQL Server 2000 (8.x) ve sonraki sürümlerle başlayan SQL Server sürümleriyle uyumlu yerel veri dosyalarını destekler.
Hesaplanan sütunlar ve zaman damgası sütunları
Hesaplanan veya zaman damgası sütunları için aktarılmakta olan veri dosyasındaki değerler göz ardı edilir ve SQL Server değerleri otomatik olarak atar. Veri dosyası tablodaki hesaplanan veya zaman damgası sütunları için değer içermiyorsa, verileri içeri aktarırken tablodaki hesaplanan veya zaman damgası sütunlarının atlanması gerektiğini belirtmek için bir biçim dosyası kullanın; SQL Server, sütun için değerleri otomatik olarak atar.
Hesaplanan ve zaman damgası sütunları, SQL Server'dan veri dosyasına olağan şekilde toplu olarak kopyalanır.
Boşluk veya tırnak işareti içeren tanımlayıcıları belirtme
SQL Server tanımlayıcıları, eklenmiş boşluklar ve tırnak işaretleri gibi karakterler içerebilir. Bu tür tanımlayıcılar aşağıdaki gibi ele alınmalıdır:
Komut isteminde boşluk veya tırnak işareti içeren bir tanımlayıcı veya dosya adı belirttiğinizde, tanımlayıcıyı tırnak işaretleri ("") içine alın.
Örneğin, aşağıdaki
bcp out
komutuCurrency Types.dat
adlı bir veri dosyası oluşturur:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
Boşluk veya tırnak işareti içeren bir veritabanı adı belirtmek için
-q
seçeneğini kullanmanız gerekir.Ekli boşluklar veya tırnak işaretleri içeren sahip, tablo veya görünüm adları için şunları yapabilirsiniz:
-q
seçeneğini belirtin veyaSahip, tablo veya görünüm adını köşeli parantez (
[]
) içine tırnak işaretlerinin içinde alın.
Veri doğrulama
bcp artık veri dosyasındaki geçersiz verilerde yürütülürlerse betiklerin başarısız olmasına neden olabilecek veri doğrulama ve veri denetimlerini zorunlu tutuyor. Örneğin bcp şimdi şunları doğrular:
Kayan veya gerçek veri türlerinin yerel gösterimleri geçerlidir.
Unicode verilerinin bayt uzunluğu çift sayıdır.
SQL Server'ın önceki sürümlerinde toplu olarak içeri aktarılabilen geçersiz veri biçimleri şimdi yüklenemez; ancak önceki sürümlerde istemci geçersiz verilere erişmeye çalışana kadar hata oluşmadı. Eklenen doğrulama, toplu yüklemeden sonra verileri sorgularken sürprizleri en aza indirir.
SQLXML belgelerini toplu dışarı veya içeri aktarma
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 tipi | Etki |
---|---|
SQLCHAR veya SQLVARYCHAR |
Veriler, istemci kod sayfasında veya harmanlama tarafından ima edilen kod sayfasında gönderilir. Bu etki, biçim dosyası belirtmeden -c anahtarını belirtmekle aynıdır. |
SQLNCHAR veya SQLNVARCHAR |
Veriler Unicode olarak gönderilir. Bu etki, biçim dosyası belirtmeden -w anahtarını belirtmekle aynıdır. |
SQLBINARY veya SQLVARYBIN |
Veriler dönüştürme olmadan gönderilir. |
İzinler
bcp out
işlemi, kaynak tabloda SELECT
izin gerektirir.
bcp in
işlemi, hedef tabloda en az SELECT
/INSERT
izin gerektirir. Ayrıca, aşağıdaki koşullardan herhangi biri doğruysa ALTER TABLE
izni gerekir:
Kısıtlamalar var ve
CHECK_CONSTRAINTS
ipucu belirtilmemiş.Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça etkinleştirmek için
CHECK_CONSTRAINTS
ipucuyla-h
seçeneğini kullanın.Tetikleyiciler var ve
FIRE_TRIGGER
ipucu belirtilmemiş.Varsayılan olarak tetikleyiciler tetiklenmez. Tetikleyicileri açıkça tetiklemek için
-h
seçeneğiniFIRE_TRIGGERS
ipucuyla kullanın.Kimlik değerlerini bir veri dosyasından içeri aktarmak için
-E
seçeneğini kullanırsınız.
Not
Hedef tabloda ALTER TABLE
izninin gerekliliği SQL Server 2005'te (9.x) tanıtıldı. Bu gereksinim, kullanıcı hesabının hedef tablo için ALTER TABLE
izinleri yoksa, tetikleyicileri ve kısıtlama denetimlerini zorlamayan bcp betiklerinin başarısız olmasına neden olabilir.
Karakter modu (-c
) ve yerel mod (-n
) en iyi yöntemleri
Bu bölümde karakter modu (-c
) ve yerel mod (-n
) için öneriler vardır.
(Yönetici/Kullanıcı) Mümkün olduğunda, ayırıcı sorunu önlemek için yerel biçimi (
-n
) kullanın. SQL Server kullanarak dışarı ve içeri aktarmak için yerel biçimi kullanın. Veriler SQL Server olmayan bir veritabanına aktarılacaksa,-c
veya-w
seçeneğini kullanarak VERILERI SQL Server'dan dışarı aktarın.(Yönetici)
bcp out
kullanırken verileri doğrulayın. Örneğin, öncebcp out
, ardındanbcp in
vebcp out
'yi kullandığınızda, verilerin düzgün bir şekilde dışa aktarıldığını ve sonlandırıcı değerlerin herhangi bir veri değeri olarak kullanılmadığını doğrulayın. Sonlandırıcı değerleri ile veri değerleri arasındaki çakışmaları önlemek için varsayılan sonlandırıcıları (-t
ve-r
seçenekleri kullanarak) rastgele onaltılık değerlerle geçersiz kılmayı göz önünde bulundurun.(Kullanıcı) Gerçek dize değeriyle çakışma olasılığını en aza indirmek için uzun ve benzersiz bir sonlandırıcı (herhangi bir bayt veya karakter dizisi) kullanın. Bu,
-t
ve-r
seçenekleri kullanılarak yapılabilir.
Örnekler
Bu bölümdeki örnekler SQL Server 2016 (13.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği için WideWorldImporters
örnek veritabanını kullanır.
WideWorldImporters
https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0'den indirilebilir. Örnek veritabanını geri yükleme söz dizimi hakkında bilgi için RESTORE Deyimleri bölümüne bakın.
Örnek test koşulları
Aksi belirtilmediği durumlar dışında, örneklerde Windows Kimlik Doğrulaması kullandığınız ve bcp komutunu çalıştırdığınız sunucu örneğine güvenilir bir bağlantınız olduğu varsayılır. Örneklerin çoğunda D:\bcp
adlı bir dizin kullanılır.
Aşağıdaki Transact-SQL betiği, WideWorldImporters.Warehouse.StockItemTransactions
tablosunun boş bir kopyasını oluşturur ve ardından birincil anahtar kısıtlaması ekler:
USE WideWorldImporters;
GO
SET NOCOUNT ON;
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
SELECT *
INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
FROM WideWorldImporters.Warehouse.StockItemTransactions
WHERE 1 = 2;
ALTER TABLE Warehouse.StockItemTransactions_bcp
ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp
PRIMARY KEY NONCLUSTERED (StockItemTransactionID ASC);
END
StockItemTransactions_bcp
tablosunu gerektiği gibi kesebilirsiniz:
TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;
A. bcp yardımcı programı sürümünü tanımlama
Komut istemine aşağıdaki komutu girin:
bcp -v
B. Tablo satırlarını veri dosyasına kopyalama (güvenilir bağlantıyla)
Aşağıdaki örneklerde out
tablosundaki WideWorldImporters.Warehouse.StockItemTransactions
seçeneği gösterilmektedir.
Temel
Bu örnek,
StockItemTransactions_character.bcp
adlı bir veri dosyası oluşturur ve karakter biçimi kullanarak tablo verilerini bu dosyaya kopyalar.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
genişletilmiş
Bu örnek,
adlı bir veri dosyası oluşturur ve yerel biçimini kullanarak tablo verilerini bu dosyaya kopyalar. Örnek ayrıca: Söz dizimi hatası sayısı üst sınırını, hata dosyasını ve çıkış dosyasını belirtir. Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\bcp\StockItemTransactions_native.bcp -m 1 -n -e D:\bcp\Error_out.log -o D:\bcp\Output_out.log -S -T
Error_out.log
ve Output_out.log
gözden geçirin.
Error_out.log
boş olmalıdır.
StockItemTransactions_character.bcp
ile StockItemTransactions_native.bcp
arasındaki dosya boyutlarını karşılaştırın.
C. Tablo satırlarını veri dosyasına kopyalama (karma mod kimlik doğrulaması ile)
Aşağıdaki örnekte, out
tablosundaki WideWorldImporters.Warehouse.StockItemTransactions
seçeneği gösterilmektedir. Bu örnek, StockItemTransactions_character.bcp
adlı bir veri dosyası oluşturur ve karakter biçimi kullanarak tablo verilerini bu dosyaya kopyalar.
Örnekte karma mod kimlik doğrulaması kullandığınız varsayılır ve oturum açma kimliğinizi belirtmek için -U
anahtarını kullanmanız gerekir. Ayrıca, yerel bilgisayardaki varsayılan SQL Server örneğine bağlanamıyorsanız sistem adını ve isteğe bağlı olarak bir örnek adını belirtmek için -S
anahtarını kullanın.
Komut istemine şu komutu girin: (Sistem sizden parolanızı ister.)
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. Dosyadan tabloya veri kopyalama
Aşağıdaki örnekler, daha önce oluşturulan dosyaları kullanarak in
tablosundaki WideWorldImporters.Warehouse.StockItemTransactions_bcp
seçeneğini gösterir.
Temel
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_character.bcp
veri dosyası kullanılır.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
genişletilmiş
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_native.bcp
veri dosyası kullanılır. Örnek ayrıca:TABLOCK
ipucunu kullanın; toplu iş boyutunu, söz dizimi hatalarının en fazla sayısını, hata dosyasını ve çıkış dosyasını belirtir.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\bcp\Error_in.log -o D:\bcp\Output_in.log -S -T
Error_in.log
veOutput_in.log
gözden geçirin.
E. Belirli bir sütunu veri dosyasına kopyalama
Belirli bir sütunu kopyalamak için queryout
seçeneğini kullanabilirsiniz. Aşağıdaki örnek, StockItemTransactionID
tablosunun yalnızca Warehouse.StockItemTransactions
sütununu bir veri dosyasına kopyalar.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T
F. Belirli bir satırı veri dosyasına kopyalama
Belirli bir satırı kopyalamak için queryout
seçeneğini kullanabilirsiniz. Aşağıdaki örnek, Amy Trefl
tablosundan WideWorldImporters.Application.People
adlı kişinin satırını Amy_Trefl_c.bcp
veri dosyasına kopyalar.
Not
veritabanını tanımlamak için -d
anahtarı kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
G. Sorgudan veri dosyasına veri kopyalama
Sonuç kümesini bir Transact-SQL deyiminden veri dosyasına kopyalamak için queryout
seçeneğini kullanın. Aşağıdaki örnek, adları WideWorldImporters.Application.People
tablosundan tam ada göre sıralanmış olarak People.txt
veri dosyasına kopyalar.
Not
-t
anahtarı virgülle ayrılmış bir dosya oluşturmak için kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. Biçim dosyaları oluşturma
Aşağıdaki örnek, Warehouse.StockItemTransactions
veritabanındaki WideWorldImporters
tablosu için üç farklı biçim dosyası oluşturur. Oluşturulan her dosyanın içeriğini gözden geçirin.
Komut isteminde aşağıdaki komutları girin:
REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T
REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T
REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T
Not
-x
anahtarını kullanmak için bcp 9.0 istemcisi kullanıyor olmanız gerekir.
bcp 9.0 istemcisini kullanma hakkında bilgi için Açıklamalar bölümüne bakın.
Daha fazla bilgi için bkz. XML Dışı biçim dosyalarını kullanma (SQL Server) ve XML Biçim Dosyaları (SQL Server).
Ben. bcp ile toplu aktarımlar için biçim dosyası kullanma
Verileri SQL Server örneğine aktarırken daha önce oluşturulmuş bir biçim dosyası kullanmak için -f
anahtarını in
seçeneğiyle kullanın. Örneğin, aşağıdaki komut StockItemTransactions_character.bcp
bir veri dosyasının içeriğini önceden oluşturulmuş biçim dosyasını kullanarak Warehouse.StockItemTransactions_bcp
StockItemTransactions_c.xml
tablosunun bir kopyasına toplu olarak kopyalar.
Not
-L
anahtarı yalnızca ilk 100 kaydı içeri aktarmak için kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Not
Biçim dosyaları, veri dosyası alanları tablo sütunlarından farklı olduğunda kullanışlıdır; örneğin, sayı, sıralama veya veri türlerinde. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).
J. Kod sayfası belirtme
Aşağıdaki kısmi kod örneği, bcp içeri aktarma işlemini, 65001 kod sayfası belirtilerek gösterir.
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. Özel alan ve satır sonlandırıcıları kullanan örnek çıktı dosyası
Bu örnekte, özel alan ve satır sonlandırıcıları kullanılarak bcp tarafından oluşturulan iki örnek dosya gösterilmektedir.
dbo.T1
veritabanındatempdb
veID
olmak üzere iki sütun içeren bir tabloName
oluşturun.USE tempdb; GO CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20)); GO INSERT INTO dbo.T1 VALUES (1, N'Natalia'); INSERT INTO dbo.T1 VALUES (2, N'Mark'); INSERT INTO dbo.T1 VALUES (3, N'Randolph'); GO
Özel bir alan sonlandırıcı kullanarak
dbo.T1
örnek tablodan bir çıkış dosyası oluşturun.Bu örnekte sunucu adı
MYSERVER
ve-t ,
özel alan sonlandırıcısını belirtir.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
Sonuç kümesi aşağıdadır.
1,Natalia 2,Mark 3,Randolph
Özel alan sonlandırıcısı ve özel satır sonlandırıcı kullanarak
dbo.T1
örnek tablodan bir çıkış dosyası oluşturun.Bu örnekte sunucu adı
MYSERVER
-t ,
özel alan sonlandırıcısını ve-r :
özel satır sonlandırıcısını belirtir.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
Sonuç kümesi aşağıdadır.
1,Natalia:2,Mark:3,Randolph:
Not
Satır sonlandırma işareti, son kayda bile her zaman eklenir. Ancak, alan sonlandırıcısı son alana eklenmez.
Ek örnekler
Aşağıdaki makaleler, bcpkullanma örneklerini içerir:
Toplu içeri veya toplu dışarı aktarma için veri biçimleri (SQL Server)
- Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server)
- Verileri içeri veya dışarı aktarmak için karakter biçimini kullanma (SQL Server)
- Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimi Kullanma (SQL Server)
- Verileri içeri veya dışarı aktarmak için unicode karakter biçimini kullanma (SQL Server)
Toplu içeri aktarma (SQL Server) sırasında null veya varsayılan değerleri tutma
Verileri toplu içeri aktarırken kimlik değerlerini koruma (SQL Server)
Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server)
- Biçim dosyası oluşturma (SQL Server)
- Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server)
- Tablo sütununu (SQL Server) atlamak için biçim dosyası kullanma
- Bir veri alanını atlamak için biçim dosyası kullanma (SQL Server)
- Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma
XML belgeleri (SQL Server) toplu içeri ve dışarı aktarma örnekleri
İlgili içerik
- Verileri toplu dışarı veya içeri aktarmaya hazırlama
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server)
Yardım alın
- SQL için Fikirler: SQL Server'ın geliştirilmesine yönelik önerileriniz mi var?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (etiket sql-server): SQL Server soruları sorun
- Stack Overflow (etiket sql-server): SQL geliştirme sorularının yanıtları
- Microsoft SQL Server Lisans Koşulları ve Bilgileri
- İş kullanıcıları için destek seçenekleri
- Ek SQL Server yardımı ve geri bildirimi
SQL belgelerine katkıda bulunma
SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.
Daha fazla bilgi için bkz. SQL Server belgelerine katkıda bulunma