bcp yardımcı programı
Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics 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.
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.
Windows
- 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
Linux ve macOS
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
Not
sqlcmd ve bcp Linux'ta da kullanılabilir. Daha fazla bilgi için bkz. Linux üzerinde SQL Server komut satırı araçlarını (sqlcmd ve bcp) yükleme.
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 Azure Active Directory 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]
[-v]
[-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ]
[-w]
[-x]
Komut satırı seçenekleri
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.
tablo_adı
SQL Server'a veri aktarırken hedef tablonun adı (in
) ve SQL Server'dan veri dışarı aktarılırken kaynak tablo (out
).
görünüm_adı
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, geçici tablo yalnızca çalışma anında kullanılabildiğinden ve deyim yürütme anında kullanılmadığından bcp deyim başarısız olur. 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 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. Verileri ayıklarken, bcp yardımcı programı boş bir dizeyi null ve null bir dizeyi boş dize olarak temsil eder.
veri_dosyası
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 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. Kaydedilmiş işlemler tarafından zaten içeri aktarılan toplu işlemler 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 }
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.
Not
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ı belirtmenizi öneririz.
Kod sayfası değeri | Açıklama |
---|---|
ACP | ANSI/Microsoft Windows (ISO 1252). |
OEM (Orijinal Ekipman Üreticisi) | İstemci tarafından kullanılan varsayılan kod sayfası. bu, -C belirtilmezse kullanılan varsayılan kod sayfasıdır. |
ÇİĞ | 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, komut satırlarını basitleştirmek, MultiSubnetFailover gibi normalde komut satırından erişilemeyen sürücü seçeneklerini zorlamak veya hassas kimlik bilgilerinin komut satırı bağımsız değişkenleri olarak bulunmasına karşı korunmasına yardımcı olmak için sürücü seçeneklerini gömmek amacıyla kullanılabilir. 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_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 Kimliği ile kimlik doğrulaması yapılacağı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
Microsoft Entra etkileşimli kimlik doğrulaması şu anda Linux veya macOS'ta desteklenmiyor. Microsoft Entra tümleşik kimlik doğrulaması, SQL Server sürüm 17.6.1 ve sonraki sürümleri için
Bahşiş
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
aadserver.database.windows.net
'deki veritabanıtestdb
'den tablobcptest
'ı 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
aadserver.database.windows.net
üzerindeki veritabanıtestdb
'ye, dosyac:\last\data1.dat
'dan tablobcptest
'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 tümleşik
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,
aadserver.database.windows.net
mantıksal sunucusundakitestdb
veritabanındanbcptest
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 sunucuaadserver.database.windows.net
'teki veritabanıtestdb
'de bulunan tablobcptest
'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ü öğrenmek için
bcp -v
yürütü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çin - Kullanı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 Oturum Açma Kimliği kutusuna kimliğin
Object (principal) ID
yapıştırın - DSN'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,
-S
için geçirilen değerin bir DSN olduğunu belirtmek üzere-D
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
bcp (17.8 ve üzeri sürüm kullanıcıları) aynı zamanda 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
'ıConnect-AzAccount
'nin-AccountId
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
Tüm Azure SQL ve SQL Server 2022+ için 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ı için bcpsürüm 15.0.1000.34 veya üzerinin yanı sıra ODBC sürüm 17.2 veya üzerigerekir.
Etkileşimli kimlik doğrulamasını etkinleştirmek için yalnızca kullanıcı adı (
-U
) içeren ve parola içermeyen-G
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 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]"
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 bilinmemektedir.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üresi boyunca 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üresi boyunca bir kilit tutmak tablodaki kilit çekişmesini azalttığı için bu ipucu performansı önemli ölçüde artırır. Tabloda dizin yoksa ve TABLOCK belirtildiyse, bir tablo birden çok istemciden eşzamanlı olarak yüklenebilir. Varsayılan olarak, toplu yükleme sırasında tablo kilidi davranışı tablo kilidi seçeneğitarafından belirlenir.
Not
Hedef tablo kümelenmiş columnstore diziniyse, her eşzamanlı iş parçacığına dizin içinde ayrı bir satır grubu atandığından ve bu gruba veri yüklendiğinden, birden çok eşzamanlı istemci tarafından yükleme yapılırken TABLOCK ipucu gerekli değildir. Ayrıntılar için columnstore dizini kavramsal makalelerine bakın,
KISITLAMALARI_KONTROL_ET
Toplu içeri aktarma işlemi sırasında hedef tablo veya görünümdeki tüm kısıtlamaların denetlenebilmesi gerektiğini belirtir. CHECK_CONSTRAINTS ipucu olmadan, tüm CHECK ve FOREIGN 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 ve NOT 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ğrulama 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.
Not
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.FIRE_TRIGGERS
bağımsız değişkeninde
ile belirtildiğinde, 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ışmaz. out
,queryout
veformat
bağımsız değişkenleri için FIRE_TRIGGERS kuralı yoksayılır.
-i input_file
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 application_intent
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_açma_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.
Not
-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
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ı sormaz. 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).
-N
ile bcp 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ı
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.
Önemli
Boş parola kullanmayın. Güçlü bir parola kullanın.
Parolanızı maskeleyebilmek için -U
seçeneğiyle birlikte -P
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şareti ("") 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 makalenin devamında Açıklamalarbö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 kesilir. Ö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 server_name [\instance_name]
Bağlanacak SQL Server örneğini 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
'de 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, kullanıcı adı ve parola kombinasyonu yerine -T
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.
-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)
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 bir alan için onay istemez; depolama türü olarak nchar kullanır, ön ek yoktur, alan ayırıcı 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
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.
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'nde
bcp -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şkenleriveya 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 içeri aktarma işlemlerinde minimum günlük kaydının önkoşulları için 'a 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ı tırnak işaretlerinin içine köşeli parantez (
[]
) içine alın.
Veri doğrulama
bcp artık, veri dosyasındaki geçersiz veriler üzerinde çalıştırıldığında betiklerin başarısız olmasına neden olabilecek veri doğrulaması ve veri denetimlerini zorunlu kılıyor. Ö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 izni gerektirir.
bcp in
işlemi en az hedef tabloda SELECT/INSERT izinleri gerektirir. Ayrıca, aşağıdaki koşullardan biri doğruysa ALTER TABLE izni gerekir:
Kısıtlamalar var ve CHECK_CONSTRAINTS ipucu belirtilmemiş.
Not
Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça etkinleştirmek için
-h
seçeneğini CHECK_CONSTRAINTS ipucuyla birlikte kullanın.Tetikleyiciler var ve FIRE_TRIGGER ipucu belirtilmemiş.
Not
Varsayılan olarak tetikleyiciler tetiklenmez. Tetikleyicileri açıkça başlatmak için FIRE_TRIGGERS ipucuyla
-h
seçeneğini kullanın.Kimlik değerlerini bir veri dosyasından içeri aktarmak için
-E
seçeneğini kullanırsınız.
Not
SQL Server 2005'te (9.x) hedef tablo için ALTER TABLE izninin gerekliliği yeniydi. Bu yeni gereksinim, kullanıcı hesabının hedef tablo için ALTER TABLE izinleri yoksa tetikleyici 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, BCP OUT, BCP IN ve sonra BCP OUT kullandığınızda verilerin düzgün bir şekilde dışarı aktarıldığını ve sonlandırıcı değerlerinin bazı veri değerlerinin parçası 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 betik, WideWorldImporters.Warehouse.StockItemTransactions
tablosunun boş bir kopyasını oluşturur ve ardından birincil anahtar kısıtlaması ekler. SQL Server Management Studio'da (SSMS) aşağıdaki T-SQL betiğini çalıştırın
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 WideWorldImporters.Warehouse.StockItemTransactions
tablosundaki out
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, WideWorldImporters.Warehouse.StockItemTransactions
tablosundaki out
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 WideWorldImporters.Warehouse.StockItemTransactions_bcp
tablosundaki in
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, Warehouse.StockItemTransactions
tablosunun yalnızca StockItemTransactionID
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, WideWorldImporters.Application.People
tablosundan Amy Trefl
adlı kişinin satırını Amy_Trefl_c.bcp
veri dosyasına kopyalar.
Not
-d
anahtarı veritabanını tanımlar.
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, WideWorldImporters
veritabanındaki Warehouse.StockItemTransactions
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
Dikkat
-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 bkz. "Açıklamalar."
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 içeri aktarmak 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 StockItemTransactions_c.xml
Warehouse.StockItemTransactions_bcp
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.
tempdb
veritabanındaID
veName
olmak üzere iki sütun içeren bir tablodbo.T1
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 özel alan sonlandırıcısı-t ,
tarafından belirtilir.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
, özel alan sonlandırıcısı-t
, ' ve özel satır sonlandırıcısı-r :
tarafından belirtilir.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ırıcısı, 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 Veri Alımı veya Toplu Veri Aktarımı 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 İç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)
- Bir Tablo Sütununu Atlamak için Biçim Dosyası Kullanma (SQL Server)
- 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
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.
İ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ı
- Reddit: SQL Server hakkında genel tartışma
- 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