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 Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
Toplu kopyalama programı yardımcı programı (bcp) verileri SQL Server örneği ile kullanıcı tarafından belirtilen biçimdeki bir veri dosyası arasında toplu olarak kopyalar.
Linux'ta bcp kullanmak için bkz . Linux'ta sqlcmd ve bcp SQL Server komut satırı araçlarını yükleme. Azure Synapse Analytics ile bcp kullanma hakkında ayrıntılı bilgi için bkz. bcpile veri yükleme.
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.
Note
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.
Note
Microsoft Entra ID daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Sistem gereksinimleri
- Windows 10 ve sonraki sürümleri
- Windows Server 2016 ve sonraki sürümleri
Bu bileşen, SQL Serveriçin en son
bcp
TDS 8.0 desteği
SQL Server 2025 (17.x), bcp yardımcı programı için TDS 8.0 desteği sunar.
Syntax
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 | 170)]
[-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.
| Komut satırı seçeneği | Windows'da desteklenir | Linux ve macOS'ta desteklenir |
|---|---|---|
| [database_name.]şema.{table_name | view_name | "sorgu"} | Yes | Yes |
| {in data_file | outdata_file | queryoutdata_file | format nul} | Yes | Yes |
| -a packet_size | Yes | Yes |
| -b batch_size | Yes | Yes |
| -c | Yes | Yes |
| -C { ACP | OEM | HAM | code_page } | Yes | No |
| -d database_name | Yes | Yes |
| -D | Yes | Yes |
| -e err_file | Yes | Yes |
| -E | Yes | Yes |
| -f format_file | Yes | Yes |
| -F first_row | Yes | Yes |
| -G Microsoft Entra kimlik doğrulaması | Yes | Yes |
| -h"hint [,... n]" | Yes | No |
| -i input_file | Yes | No |
| -k | Yes | Yes |
| -K application_intent | Yes | Yes |
| -l login_timeout | Yes | Yes |
| -L son_satır | Yes | Yes |
| -m max_errors | Yes | Yes |
| -n | Yes | Yes |
| -N | Yes | No |
| -o output_file | Yes | No |
| -P parolası | Yes | Yes |
| -q | Yes | Yes |
| -r row_term | Yes | Yes |
| -R | Yes | Yes |
| -S [server_name[\instance_name]] | Yes | Yes |
| -t field_term | Yes | Yes |
| -T | Yes | Yes |
| -U login_id | Yes | Yes |
| -u | Evet 1 | Yes |
| -v | Yes | Yes |
| -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) | Yes | No |
| -w | Yes | Yes |
| -x | Yes | No |
| -Y[s|m|o] | Evet 1 | Yes |
Evet1 SQL Server 2025 (17.x) ve sonraki sürümleri.
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, -dile veritabanı adını açıkça belirtebilirsiniz.
schema
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.
"query"
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.
in
Bir dosyadan veritabanı tablosuna veya görünümüne verileri kopyalar. Toplu kopyalamanın yönünü belirtir.
out
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.
queryout
Bir sorgudan kopyalar ve yalnızca sorgudan verileri toplu olarak kopyalarken belirtilmelidir.
format
Belirtilen seçeneğe (-n, -c, -wveya -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. bcp (SQL Server) ile biçim dosyası oluşturma. değer olarak nul belirtmelisiniz (format nul).
-a packet_size
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
-wile 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 | HAM | 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 | Description |
|---|---|
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 ve bcp'de DSN desteği.
-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:
-fformatseç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-xseçeneğini de belirtin. Daha fazla bilgi için bkz. bcp (SQL Server) ile biçim dosyası oluşturma.inveyaoutseçeneğiyle kullanıldığında,-fmevcut bir biçim dosyası gerektirir.Note
inveyaoutseçeneğiyle bir biçim dosyası kullanmak isteğe bağlıdır.-fseçeneğinin olmaması durumunda,-n,-c,-wveya-Nbelirtilmezse, 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_satır
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 -vkomutunu çalıştırın. Daha fazla bilgi için bkz. MICROSOFT Entra kimlik doğrulamasını SQL Veritabanı veya Azure Synapse Analytics ile kullanma veya Microsoft Fabric'teki SQL veritabanında kimlik doğrulaması.
Important
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,
-Gseçeneğini sağlayabilir ve ayrıca-Uve-Pseç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.datdosyasında depolar.bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxxAş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 xxxxxMicrosoft Entra entegrasyonu
Microsoft Entra tümleşik kimlik doğrulaması için kullanıcı adı veya parola olmadan
-Gseç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,
bcptestmantıksal sunucusundakitestdbveritabanındanaadserver.database.windows.nettablosunu dışa aktarır ve Microsoft Entra ID ile birleştirilmiş Windows kimlik bilgilerini kullanarak verileric:\last\data2.datdosyasında depolar.bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -cAş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 -cMicrosoft Entra Yönetilen Hizmet Kimliği
Important
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 -vkomutunu ç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
ODBCyazı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) IDkutusuna 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,
-Diçin geçirilen değerin bir DSN olduğunu belirtmek üzere-Sbayrağı 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 -cBu örnek, erişim belirtecini almak ve belirteç dosyasına yerleştirmek için
Client ID'ı-AccountId'ninConnect-AzAccountparametresine 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 -cMicrosoft 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-Useç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.comFederasyon 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.comKonuk 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]"
Şunlar için geçerlidir: Yalnızca Windows. 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,
ORDERyan 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).
-bbelirtilmediğ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_BATCHbilinmiyor.KILOBYTES_PER_BATCH = cc
Toplu iş başına yaklaşık kilobayt veri sayısı (cc). Varsayılan olarak,
KILOBYTES_PER_BATCHbilinmiyor.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
TABLOCKbelirtilirse, tablo birden çok istemciden eşzamanlı olarak yüklenebilir. Varsayılan olarak, kilitleme davranışıtable lock on bulkloadtablo seçeneği tarafından belirlenir. Daha fazla bilgi için bkz. sp_tableoption.Note
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
TABLOCKipucuna gerek yoktur. Daha fazla bilgi için bkz. Columnstore dizinleri: genel bakış.CHECK_CONSTRAINTS
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_CONSTRAINTSipucu olmadan,CHECKveFOREIGN KEYkısıtlamaları yoksayılır ve işlemden sonra tablodaki kısıtlama güvenilir değil olarak işaretlenir.Note
UNIQUE,PRIMARY KEYveNOT NULLkı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
CHECKkı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ış).
CHECKkı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.
Note
-mmax_errors ayarı kısıtlama denetimi için geçerli değildir.FIRE_TRIGGERS
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_TRIGGERSbelirtilmezse, hiçbir ekleme tetikleyicisi çalıştırılamaz.FIRE_TRIGGERS,out,queryoutveformatbağı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, -wveya -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 application_intent (uygulama amacı)
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_satır
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 max_errors
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.
Note
-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, -nyerine -N kullanmaktır.
-o çıkış_dosyası
Şunlar için geçerlidir: Yalnızca Windows. 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 parolası
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.
Important
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, seçeneği ve diğer anahtarlarla birlikte -U belirttikten sonra (belirtmeyin-P), Enter tuşuna basın ve 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
SET QUOTED_IDENTIFIER ON yardımcı programı ile SQL Server örneği arasındaki bağlantıda 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
-dgeçirilen değerlere uygulanmaz.
Daha fazla bilgi için bu makaledeki Açıklamalar bölümüne bakın.
-r row_term
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ını (SQL Server) belirtme.
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, 0x410041belirtirseniz 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 [server_name[\instance_name]]
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ını (SQL Server) belirtme.
bcp komutunda alan sonlandırıcısını onaltılık gösterimle belirtirseniz, değer 0x00 konumunda kesilir. Örneğin, 0x410041belirtirseniz 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.
Important
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.
Sunucu sertifikasına güven. Bağlantı için Şifrele seçeneğiyle kullanıldığında, otomatik olarak imzalanan bir sunucu sertifikası kullanarak şifrelemeyi etkinleştirir.
-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 | 170 }
Ş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) -
170= SQL Server 2025 (17.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
-cile 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 -fformat_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 -fformat_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.
Bağlantıların ağ üzerinden TLS şifrelemesi kullanıp kullanmadığını belirtir.
-Y (için o), optional, m (için mandatory, varsayılan) veya s (için strict) olabilir. Eğer siz -Y eklemezseniz, -Ym (mandatory için) varsayılandır.
Remarks
SQL Server 2019 (15.x) araçlarını yüklediğinizde bcp 13.0 istemcisi yüklenir. SQL Server'ın birden çok sürümü için araçlar yüklüyse,
PATHortam 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 -vkomutunu çalıştırın.PATHortam 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.exebcp yardımcı programı, Microsoft SQL Server 2016 Özellik Paketi'ndan ayrı olarak da indirilebilir.
ENU\x64\MsSqlCmdLnUtils.msiveyaENU\x86\MsSqlCmdLnUtils.msiseç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 satırı 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 outkomutuCurrency Types.datadlı bir veri dosyası oluşturur:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -cBoşluk veya tırnak işareti içeren bir veritabanı adı belirtmek için
-qseç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:
-qseç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 türü | Effect |
|---|---|
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. |
Permissions
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_CONSTRAINTSipucu belirtilmemiş.Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça etkinleştirmek için
-hipucuylaCHECK_CONSTRAINTSseçeneğini kullanın.Tetikleyiciler var ve
FIRE_TRIGGERipucu belirtilmemiş.Varsayılan olarak tetikleyiciler tetiklenmez. Tetikleyicileri açıkça tetiklemek için
-hseçeneğiniFIRE_TRIGGERSipucuyla kullanın.Kimlik değerlerini bir veri dosyasından içeri aktarmak için
-Eseçeneğini kullanırsınız.
Note
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 izinleri yoksa, tetikleyicileri ve kısıtlama denetimlerini zorlamayan ALTER TABLE 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. Verileri SQL Server olmayan bir veritabanına aktarmayı planlıyorsanız veya-cseçeneğini kullanarak-wSQL Server'dan verileri dışarı aktarın.(Yönetici)
bcp outkullanırken verileri doğrulayın. Örneğin, öncebcp out, ardındanbcp invebcp 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ı (-tve-rseç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,
-tve-rseçenekleri kullanılarak yapılabilir.
Examples
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.
Basic
Bu örnek,
StockItemTransactions_character.bcpadlı 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 -TExpanded
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.loggözden geçirin.
Error_out.log boş olmalıdır.
StockItemTransactions_character.bcp ile StockItemTransactions_native.bcparası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.
Basic
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_character.bcpveri dosyası kullanılır.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_native.bcpveri dosyası kullanılır. Örnek ayrıca:TABLOCKipucunu 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 -TError_in.logveOutput_in.loggö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.bcpveri dosyasına kopyalar.
Note
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.
Note
-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
Note
-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ı (SQL Server) ve XML biçim dosyalarını (SQL Server) kullanma.
I. 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.bcpbir veri dosyasının içeriğini önceden oluşturulmuş biçim dosyasını kullanarak Warehouse.StockItemTransactions_bcpStockItemTransactions_c.xml tablosunun bir kopyasına toplu olarak kopyalar.
Note
-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
Note
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.T1veritabanındatempdbveIDolmak üzere iki sütun içeren bir tabloNameoluş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ı
MYSERVERve-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:Note
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)
- bcp (SQL Server) ile biçim dosyası oluşturma
- 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
- TOPLU 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 Soru-Cevap (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. Microsoft Learn belgelerini düzenleme.