Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
SQL veritabanı Microsoft Fabric
Toplu kopyalama programı yardımcı programı (bcp) verileri Microsoft SQL Server örneği ile kullanıcı tarafından belirtilen biçimdeki bir veri dosyası arasında toplu olarak kopyalar.
Linux'ta
bcp yardımcı programı, çok sayıda yeni satırı SQL Server tablolarına aktarmak veya tabloların dışındaki verileri veri dosyalarına aktarmak için kullanılabilir.
queryout
seçeneğiyle kullanılması dışında yardımcı program Transact-SQL bilgisi gerektirmez. Verileri tabloya aktarmak için, bu tablo için oluşturulmuş bir biçim dosyası kullanmanız veya tablonun yapısını ve sütunları için geçerli olan veri türlerini anlamanız gerekir.
Not
Verilerinizi yedeklemek için bcp kullanıyorsanız, veri biçimini kaydetmek için bir biçim dosyası oluşturun. bcp veri dosyaları herhangi bir şema veya biçim bilgisi içermediğinden, bir tablo veya görünüm bırakıldığında ve bir biçim dosyanız yoksa verileri içeri aktaramayabilirsiniz.
Linux ve macOS'ta bcp için dikkate alınması gerekenler için bkz. Linux ve macOS üzerinde bcp ile ilgili önemli noktalar.
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.
Linux ve macOS'ta sqlcmd ve bcp yükleme yönergeleri için, 'Linux üzerinde SQL Server komut satırı araçlarını yükleme ' başlıklı kılavuza bakın.
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.
sqlcmd ve bcp Linux üzerinde kullanılabilir. Daha fazla bilgi için bkz. Linux üzerinde SQL Server komut satırı araçlarını (sqlcmd ve bcp) yükleme.
bcp [database_name.] schema.{table_name | view_name | "query"}
{in data_file | out data_file | queryout data_file | format nul}
[-a packet_size]
[-b batch_size]
[-c]
[-C { ACP | OEM | RAW | code_page } ]
[-d database_name]
[-D]
[-e err_file]
[-E]
[-f format_file]
[-F first_row]
[-G Microsoft Entra authentication]
[-h"hint [,...n]"]
[-i input_file]
[-k]
[-K application_intent]
[-l login_timeout]
[-L last_row]
[-m max_errors]
[-n]
[-N]
[-o output_file]
[-P password]
[-q]
[-r row_term]
[-R]
[-S [server_name[\instance_name]]]
[-t field_term]
[-T]
[-U login_id]
[-u]
[-v]
[-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)]
[-w]
[-x]
[-Y[s|m|o]]
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'
Aşağıdaki tabloda, bcp'de kullanılabilen komut satırı seçenekleri ve hangi işletim sistemlerini destekledikleri listelenmiştir.
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.
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.
SQL Server'a veri aktarırken hedef tablonun adı (in
) ve SQL Server'dan veri dışarı aktarılırken kaynak tablo (out
).
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.
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.
Bir dosyadan veritabanı tablosuna veya görünümüne verileri kopyalar. Toplu kopyalamanın yönünü belirtir.
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.
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.
Bir sorgudan kopyalar ve yalnızca sorgudan verileri toplu olarak kopyalarken belirtilmelidir.
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
).
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.
İç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.
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).
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Veri dosyasındaki verilerin kod sayfasını belirtir. code_page yalnızca veri karakter, varcharveya 127'den büyük ya da 32'den küçük karakter değerlerine sahip metin sütunları olduğunda ilgilidir.
65001 seçeneğinin harmanlama/kod sayfası belirtimine göre önceliğe sahip olmasını istemeniz dışında, biçim dosyasındaki her sütun için bir harmanlama adı belirtmeniz gerekir.
Kod sayfası değeri | Açıklama |
---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252). |
OEM |
İstemci tarafından kullanılan varsayılan kod sayfası. bu, -C belirtilmezse kullanılan varsayılan kod sayfasıdır. |
RAW |
Bir kod sayfasından diğerine dönüştürme gerçekleşmez. Bu en hızlı seçenektir çünkü dönüştürme gerçekleşmez. |
<code_page> |
Belirli kod sayfası numarası; örneğin, 850. Sürüm 13 (SQL Server 2016 (13.x)) öncesi sürümler, 65001 (UTF-8 kodlama) kod sayfasını desteklemez. 13 ile başlayan sürümler, UTF-8 kodlamasını SQL Server'ın önceki sürümlerine aktarabilir. |
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.
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:
Daha fazla bilgi için bkz. sqlcmd'de DSN Desteği ve sqlcmdile bağlanma konusundaki bcp.
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.
İç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.
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
veya out
seçeneğiyle kullanıldığında, -f
mevcut bir biçim dosyası gerektirir.
Not
in
veya out
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.
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.
Şunlar için geçerlidir: Azure SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı ve yalnızca Azure Synapse Analytics.
Bu anahtar, istemci tarafından kullanıcının Microsoft Entra ID ile doğrulandığını belirtmek için kullanılır.
-G
anahtarı, sürüm 14.0.3008.27 veya sonraki sürümleri gerektirir. Sürümünüzü belirlemek için bcp -v
komutunu çalıştırın. Daha fazla bilgi için bkz.
Önemli
Linux ve macOS'ta Microsoft Entra etkileşimli kimlik doğrulaması şu anda desteklenmiyor. Microsoft Entra tümleşik kimlik doğrulaması, SQL Server sürüm 17.6.1 ve sonraki sürümleri için
bcp sürümünüzün Microsoft Entra kimlik doğrulaması desteği içerip içermediğini denetlemek için bcp --help
yazın ve kullanılabilir bağımsız değişkenler listesinde -G
gördüğünüzden emin olun.
Microsoft Entra kullanıcı adı ve parola
Microsoft Entra kullanıcı adı ve parolasını kullanmak istediğinizde, -G
seçeneğini sağlayabilir ve ayrıca -U
ve -P
seçeneklerini sağlayarak kullanıcı adı ve parolayı kullanabilirsiniz.
Aşağıdaki örnek, Microsoft Entra kullanıcı adı ve parola kimlik bilgilerini kullanarak verileri dışarı aktarır. Örnek, Azure sunucusu bcptest
'deki veritabanı testdb
'den tablo aadserver.database.windows.net
'ı dışarı aktarır ve verileri c:\last\data1.dat
dosyasında depolar.
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Aşağıdaki örnek, bir Microsoft Entra kullanıcısının kimlik bilgilerini kullanarak verileri içeri aktarır. Microsoft Entra kullanıcı adı ve parolası kullanılarak, Azure sunucusu c:\last\data1.dat
üzerindeki veritabanı bcptest
'ye, dosya testdb
'dan tablo aadserver.database.windows.net
'e veri aktarılır.
bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Microsoft Entra entegrasyonu
Microsoft Entra tümleşik kimlik doğrulaması için kullanıcı adı veya parola olmadan -G
seçeneğini belirtin. Bu yapılandırma, geçerli Windows kullanıcı hesabının (bcp komutunun altında çalıştığı hesap) Microsoft Entra Id ile federasyona eklenmesini gerektirir:
Aşağıdaki örnek, Microsoft Entra tümleşik kimlik doğrulamasını kullanarak verileri dışarı aktarır. Örnek, bcptest
mantıksal sunucusundaki testdb
veritabanından aadserver.database.windows.net
tablosunu dışa aktarır ve Microsoft Entra ID ile birleştirilmiş Windows kimlik bilgilerini kullanarak verileri c:\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 sunucu bcptest
'teki veritabanı testdb
'de bulunan tablo aadserver.database.windows.net
'e veri aktarır.
bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Microsoft Entra Yönetilen Hizmet Kimliği
Önemli
bcp sürücüyle sıkı bir şekilde ilişkilendirilir. Hem bcp hem de DSN'nin oluşturulduğu sürücünün ana sürümleri aynı olmalıdır. Sürümünüzü belirlemek için bcp -v
komutunu çalıştırın.
Linux'ta Yönetilen Hizmet Kimliği kullanarak bcp aracılığıyla verileri dışarı aktarmak DSN kullanılarak yapılandırılabilir.
Bu örnekte, aşağıdaki komut kullanılarak kullanıcı .odbc.ini
dosyası düzenlenerek bir kullanıcı DSN'i oluşturulmuştur.
odbcinst -j
, DSN dosyalarının bulunduğu yeri görüntülemek için kullanılabilir.
vi /home/<user>/.odbc.ini
Dosyadaki mevcut DSN'lerden sonra eklenecek satırlara bir örnek aşağıda verilmiştir. Sistem Tarafından Atanan Yönetilen Kimlikler kullanılırken LastUser
satırı kaldırılmalıdır.
[myDSN]
Driver = ODBC Driver 18 for SQL Server
Server = aadserver.database.windows.net
Database = testdb
Encrypt = yes
LastUser = <object_id_of_user_assigned_managed_identity>
Authentication = ActiveDirectoryMSI
DSN yapılandırıldıktan sonra bcp, -D
için geçirilen değerin bir DSN olduğunu belirtmek üzere -S
bayrağı kullanılarak çağrılabilir.
bcp bcptest out 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
Bu örnek, bir erişim belirtecini alır ve sistem tarafından atanan yönetilen kimliği kullanarak verileri dışarı aktarmak için bir dosyaya yerleştirir.
Connect-AzAccount -Identity
$access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Bu örnek, erişim belirtecini almak ve belirteç dosyasına yerleştirmek için Client ID
'ı -AccountId
'nin Connect-AzAccount
parametresine geçirir. Belirteç daha sonra belirtilen Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanılarak verileri dışarı aktarmak için kullanılır.
Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity'
$access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Microsoft Entra etkileşimli
Şunlar için geçerlidir: yalnızca Windows'. Linux ve macOS desteklenmez.
Tüm Azure SQL ve SQL Server 2022 (16.x) ve sonraki sürümlerde kullanılabilen Microsoft Entra etkileşimli kimlik doğrulaması, kimlik doğrulaması için etkileşimli bir iletişim kutusu kullanmanıza olanak tanır ve bu da çok faktörlü kimlik doğrulamasını destekler.
Microsoft Entra etkileşimli kimlik doğrulaması, bcpsürüm 15.0.1000.34 veya daha yenisini ve ODBC sürüm 17.2 veya daha yeni bir sürümügerektirir.
Etkileşimli kimlik doğrulamasını etkinleştirmek için yalnızca kullanıcı adı (-G
) içeren ve parola içermeyen -U
seçeneğini belirtin.
Aşağıdaki örnek, Microsoft Entra hesabının kullanıcı adını belirtmeyi içeren Microsoft Entra etkileşimli kimlik doğrulamasını kullanarak verileri dışarı aktarır.
Etkileşimli mod için el ile parola girilmesi gerekir veya çok faktörlü kimlik doğrulaması etkinleştirilmiş hesaplar için yapılandırılan MFA kimlik doğrulama yönteminizi tamamlayın.
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
Federasyon etki alanından bir Windows hesabı olan bir Microsoft Entra kullanıcısı kullanıyorsanız, komut satırına girilen kullanıcı adı etki alanını içermelidir (örneğin, joe@contoso.com
):
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
Konuk kullanıcılar belirli bir Microsoft Entra kiracısında bulunuyorsa ve bcp komutunu yürütmek için veritabanı izinlerine sahip Azure SQL Veritabanı'nda bulunan bir grubun parçasıysa, konuk kullanıcı diğer adları kullanılır (örneğin, keith0@adventure-works.com
).
Sadece Windows için geçerlidir. Linux ve macOS'ta desteklenmez.
Verilerin bir tabloya veya görünüme toplu içeri aktarılması sırasında kullanılacak ipucunu veya ipuçlarını belirtir.
ORDER (sütun [ASC | DESC] [, ...n])
Veri dosyasındaki verilerin sıralama düzeni. İçeri aktarılan veriler varsa tablodaki kümelenmiş dizine göre sıralanırsa toplu içeri aktarma performansı iyileştirilir. Veri dosyası, kümelenmiş dizin anahtarının sırası dışında farklı bir düzende sıralanmışsa veya tabloda kümelenmiş dizin yoksa, ORDER
yan tümcesi yoksayılır. Sağlanan sütun adları, hedef tabloda geçerli sütun adları olmalıdır. Varsayılan olarak, bcp veri dosyasının sıralı olmadığını varsayar. İyileştirilmiş toplu içeri aktarma için SQL Server, içeri aktarılan verilerin sıralandığını da doğrular.
ROWS_PER_BATCH = bb
Küme başına veri satırlarının sayısı (bb).
-b
belirtilmediğinde kullanılır ve veri dosyasının tamamı tek bir işlem olarak sunucuya gönderilir. Sunucu, bbdeğerine göre toplu yüklemeyi iyileştirir. Varsayılan olarak, ROWS_PER_BATCH
bilinmiyor.
KILOBYTES_PER_BATCH = cc
Toplu iş başına yaklaşık kilobayt veri sayısı (cc). Varsayılan olarak, KILOBYTES_PER_BATCH
bilinmiyor.
TABLOCK
Toplu yükleme işlemi sırasında tablo düzeyinde toplu güncelleştirme kilidinin alındığını belirtir; aksi takdirde, satır düzeyi kilit alınır. Toplu kopyalama işlemi sırasında kilit tutmak tablodaki kilit çekişmesini azalttığı için bu ipucu performansı önemli ölçüde artırır. Tabloda dizin yoksa ve TABLOCK
belirtilirse, tablo birden çok istemciden eşzamanlı olarak yüklenebilir. Varsayılan olarak, kilitleme davranışı table lock on bulkload
tablo seçeneği tarafından belirlenir. Daha fazla bilgi için bkz. sp_tableoption.
Not
Hedef tablo bir kümelenmiş columnstore indeksine sahipse, dizin içinde her eşzamanlı iş parçacığına ayrı bir satır grubu atandığından ve veriler bu gruplara yüklendiğinden, birden fazla eşzamanlı istemci tarafından yükleme yapmak için TABLOCK
ipucuna gerek yoktur. Daha fazla bilgi için bkz. Columnstore dizinleri: Genel Bakış.
KISITLAMALARI_KONTROL_ET
Toplu içeri aktarma işlemi sırasında hedef tablo veya görünümdeki tüm kısıtlamaların denetlenebilmesi gerektiğini belirtir.
CHECK_CONSTRAINTS
ipucu olmadan, CHECK
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ğrulamanın maliyeti artımlı verilere CHECK
kısıtlamaları uygulama maliyetini aşabilir. Bu nedenle, normalde artımlı toplu içeri aktarma sırasında kısıtlama denetimini etkinleştirmenizi öneririz.
Giriş verilerinin kısıtlamaları ihlal eden satırlar içermesi durumunda kısıtlamaların devre dışı bırakılmasını isteyebileceğiniz bir durumdur (varsayılan davranış).
CHECK
kısıtlamaları devre dışı bırakıldıktan sonra verileri içeri aktarabilir ve geçerli olmayan verileri kaldırmak için Transact-SQL deyimlerini kullanabilirsiniz.
bcp artık veri dosyasındaki geçersiz verilerde yürütülürlerse betiklerin başarısız olmasına neden olabilecek veri doğrulama ve veri denetimlerini zorunlu tutuyor.
Not
-m
max_errors ayarı kısıtlama denetimi için geçerli değildir.
ATEŞLEYİCİLER
Bu seçeneği bağımsız değişkenindeki belirttiğinizde, hedef tabloda tanımlanan tüm ekleme tetikleyicileri toplu kopyalama işlemi sırasında çalıştırılır.
FIRE_TRIGGERS
belirtilmezse, hiçbir ekleme tetikleyicisi çalıştırılamaz.
FIRE_TRIGGERS
, out
, queryout
ve format
bağımsız değişkenleri için göz ardı edilir.
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Etkileşimli mod (-n
, -c
, -w
veya -N
belirtilmemiş) kullanılarak toplu kopyalama gerçekleştirilirken her veri alanı için komut istemi sorularının yanıtlarını içeren yanıt dosyasının adını belirtir.
input_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -i
ile input_file değeri arasında boşluk eklemeyin.
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).
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.
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.
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.
bcp işlemi iptal edilmeden önce oluşabilecek en fazla söz dizimi hatası sayısını belirtir. Söz dizimi hatası, hedef veri türüne veri dönüştürme hatası anlamına gelir. max_errors toplamı, kısıtlama ihlalleri gibi yalnızca sunucuda algılanabilir hataları dışlar.
Bir satır, bcp aracı tarafından kopyalanamazsa, yoksayılır ve bir hata olarak sayılır. Bu seçenek dahil değilse, varsayılan değer 10'dur.
Not
-m
seçeneği, para veya bigint veri türlerini dönüştürmek için de geçerli değildir.
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).
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Toplu kopyalama işlemini, özel olmayan veriler için verilerin yerel (veritabanı) veri türlerini ve karakter verileri için Unicode karakterlerini kullanarak gerçekleştirir. Bu seçenek, -w
seçeneğine daha yüksek bir performans alternatifi sunar ve veri dosyası kullanarak bir SQL Server örneğinden diğerine veri aktarmak için tasarlanmıştır. Her alan için uyarı vermiyor. ANSI genişletilmiş karakterleri içeren verileri aktarırken ve yerel modun performansından yararlanmak istediğinizde bu seçeneği kullanın.
Daha fazla bilgi için bkz. Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimini Kullanma (SQL Server).
ile -N
kullanarak verileri dışarı ve sonra da aynı tablo şemasına aktarırsanız, sabit uzunlukta, Unicode olmayan bir karakter sütunu varsa (örneğin, char(10)) kesme uyarısı görebilirsiniz.
Uyarı göz ardı edilebilir. Bu uyarıyı çözmenin bir yolu, -n
yerine -N
kullanmaktır.
Şunlar için geçerlidir: Windows yalnızca. Linux ve macOS'ta desteklenmez.
Komut isteminden yeniden yönlendirilen çıkışı alan dosyanın adını belirtir.
output_file kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -o
ile output_file değeri arasında boşluk eklemeyin.
Oturum açma kimliğinin parolasını belirtir. Bu seçenek kullanılmazsa, bcp komutu parola ister. Komut isteminin sonunda parola olmadan bu seçenek kullanılıyorsa, bcp varsayılan parolayı (NULL
) kullanır.
Önemli
Boş parola kullanmayın. Güçlü bir parola kullanın.
Parolanızı maskeleyebilmek için -P
seçeneğiyle birlikte -U
seçeneğini belirtmeyin. Bunun yerine, -U
seçeneği ve diğer anahtarlarla (-P
belirtmeyin) bcp belirttikten sonra Enter tuşuna basın; komut sizden parola ister. Bu yöntem, girildiğinde parolanızın maskelenmiş olmasını sağlar.
parola kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -P
ile parola değeri arasına boşluk eklemeyin.
-U
olmadan -G
seçeneğiyle kullanıldığında, erişim belirteci (v17.8+) içeren bir dosya belirtir. Belirteç dosyası UTF-16LE (BOM yok) biçiminde olmalıdır.
Erişim belirteçleri çeşitli yöntemlerle elde edilebilir. Erişim belirtecinin baytlarına kadar doğru olduğundan emin olmak önemlidir çünkü erişim belirteci as-isolarak gönderilir. Aşağıda, erişim belirteci edinen örnek bir komut verilmiştir. Komutu Azure CLI ve Linux komutlarını kullanır ve uygun biçimde bir dosyaya kaydeder. Sisteminizin veya terminalinizin varsayılan kodlaması ASCII veya UTF-8 değilse, iconv
seçeneklerini ayarlamanız gerekebilir. Sonuçta elde edilen dosyanın güvenliğini dikkatle aldığınızdan ve artık gerekli olmadığında dosyayı sildiğinizden emin olun.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
bcp yardımcı programı ile SQL Server örneği arasındaki bağlantıda SET QUOTED_IDENTIFIER ON
deyimini yürütür. Boşluk veya tek tırnak işareti içeren bir veritabanı, sahip, tablo veya görünüm adı belirtmek için bu seçeneği kullanın. Üç bölümlü tablonun veya görünüm adının tamamını tırnak içine alın (""
).
Boşluk veya tek tırnak işareti içeren bir veritabanı adı belirtmek için -q
seçeneğini kullanmanız gerekir.
-q
-d
geçirilen değerlere uygulanmaz.
Daha fazla bilgi için bu makaledeki Açıklamalar bölümüne bakın.
Satır sonlandırıcısını belirtir. Varsayılan değer \n
(yeni satır karakteri). Varsayılan satır sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın. Daha fazla bilgi için bkz. Alan ve Satır Sonlandırıcıları Belirtme (SQL Server).
Satır sonlandırıcısını bir bcp komutunda onaltılık gösteriminde belirtirseniz, değer 0x00
olarak kısaltılır. Örneğin, 0x410041
belirtirseniz 0x41
kullanılır.
row_term kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -r
ile row_term değeri arasında boşluk eklemeyin.
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.
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.
Alan sonlandırıcısını belirtir. Varsayılan değer \t
(sekme karakteri) değeridir. Varsayılan alan sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın. Daha fazla bilgi için bkz. Alan ve Satır Sonlandırıcıları Belirtme (SQL Server).
bcp komutunda alan sonlandırıcısını onaltılık gösterimle belirtirseniz, değer 0x00
konumunda kesilir. Örneğin, 0x410041
belirtirseniz 0x41
kullanılır.
field_term kısa çizgi (-
) veya eğik çizgi (/
) ile başlıyorsa, -t
ile field_term değeri arasında boşluk eklemeyin.
bcp yardımcı programının tümleşik güvenlik kullanarak güvenilir bir bağlantıyla SQL Server'a bağlandığını belirtir. Ağ kullanıcısı, login_idve parola güvenlik kimlik bilgileri gerekli değildir.
-T
belirtilmezse, başarıyla bağlanmak için -U
ve -P
belirtmeniz gerekir.
Önemli
bcp yardımcı programı entegre güvenlik kullanarak güvenilir bir bağlantıyla SQL Server'a bağlanırken, -T
ve parola kombinasyonu yerine seçeneğini (güvenilen bağlantı) kullanın.
bcp yardımcı programı SQL Veritabanı'na veya Azure Synapse Analytics'e bağlanırken Windows kimlik doğrulaması veya Microsoft Entra kimlik doğrulaması desteklenmez.
-U
ve -P
seçeneklerini kullanın.
SQL Server'a bağlanmak için kullanılan oturum açma kimliğini belirtir.
Şunlar için geçerlidir: bcp sürüm 18 ve sonraki sürümler için yalnızca Linux ve macOS. Windows'da desteklenmez.
Sunucu sertifikasına güven.
bcp yardımcı program sürüm numarasını ve telif hakkını bildirir.
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
SQL Server'ın önceki bir sürümündeki veri türlerini kullanarak toplu kopyalama işlemini gerçekleştirir. Bu seçenek her alanı sormaz; varsayılan değerleri kullanır.
80
= SQL Server 2000 (8.x)90
= SQL Server 2005 (9.x)100
= SQL Server 2008 (10.0.x) ve SQL Server 2008 R2 (10.50.x)110
= SQL Server 2012 (11.x)120
= SQL Server 2014 (12.x)130
= SQL Server 2016 (13.x)140
= SQL Server 2017 (14.x)150
= SQL Server 2019 (15.x)160
= SQL Server 2022 (16.x)Örneğin, SQL Server 2000 (8.x) tarafından desteklenmeyen ancak SQL Server'ın sonraki sürümlerinde kullanıma sunulan türler için veri oluşturmak için -V80
seçeneğini kullanın.
Daha fazla bilgi için bkz. SQL Server'ın önceki sürümlerinden yerel ve karakter biçimi verilerini içeri aktarma.
Unicode karakterleri kullanarak toplu kopyalama işlemini gerçekleştirir. Bu seçenek her alan için kullanıcıdan onay istemez; depolama türü olarak nchar, ön ek yok, alan ayırıcısı olarak \t
(sekme karakteri) ve satır sonlandırıcı olarak \n
(yeni satır karakteri) kullanır.
-w
-c
ile uyumlu değildir.
Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için unicode karakter biçimini kullanma (SQL Server).
Şunlar için geçerlidir: yalnızca Windows. Linux ve macOS'ta desteklenmez.
Bu seçenek format
ve -f
format_file seçenekleriyle birlikte kullanılır ve varsayılan XML olmayan biçim dosyası yerine XML tabanlı bir biçim dosyası oluşturur. verileri içeri veya dışarı aktarırken -x
çalışmaz. hem format
hem de -f
format_fileolmadan kullanıldığında bir hata oluşturur.
Şunlar için geçerlidir: bcp sürüm 18 ve sonraki sürümler için yalnızca Linux ve macOS. Windows'da desteklenmez.
Bağlantı şifreleme modunu belirtir. Seçenekler Sıkı, Zorunlu ve İsteğe Bağlı.
-Y
parametresiz kullanıldığında Zorunlu şifreleme modu kullanılır ve -Ym
ile eşdeğerdir.
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şkenleri veya Ortam Değişkenleri'ni arayın.
bcp yardımcı programının en yeni sürümünün çalıştığından emin olmak için, bcp yardımcı programının eski sürümlerini kaldırmanız gerekir.
bcp yardımcı programının tüm sürümlerinin nereye yüklendiğini belirlemek için komut istemine yazın:
where bcp.exe
bcp yardımcı programı, Microsoft SQL Server 2016 Özellik Paketi'ndan ayrı olarak da indirilebilir.
ENU\x64\MsSqlCmdLnUtils.msi
veya ENU\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.
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.
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 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.
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
komutu Currency 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 veya
Sahip, tablo veya görünüm adını köşeli parantez ([]
) içine tırnak işaretlerinin içinde alın.
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 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. |
bcp out
işlemi, kaynak tabloda SELECT
izin gerektirir.
bcp in
işlemi, hedef tabloda en az SELECT
/INSERT
izin gerektirir. Ayrıca, aşağıdaki koşullardan herhangi biri doğruysa ALTER TABLE
izni gerekir:
Kısıtlamalar var ve CHECK_CONSTRAINTS
ipucu belirtilmemiş.
Kısıtlamaları devre dışı bırakmak varsayılan davranıştır. Kısıtlamaları açıkça etkinleştirmek için CHECK_CONSTRAINTS
ipucuyla -h
seçeneğini kullanın.
Tetikleyiciler var ve FIRE_TRIGGER
ipucu belirtilmemiş.
Varsayılan olarak tetikleyiciler tetiklenmez. Tetikleyicileri açıkça tetiklemek için -h
seçeneğini FIRE_TRIGGERS
ipucuyla kullanın.
Kimlik değerlerini bir veri dosyasından içeri aktarmak için -E
seçeneğini kullanırsınız.
Not
Hedef tabloda ALTER TABLE
izninin gerekliliği SQL Server 2005'te (9.x) tanıtıldı. Bu gereksinim, kullanıcı hesabının hedef tablo için ALTER TABLE
izinleri yoksa, tetikleyicileri ve kısıtlama denetimlerini zorlamayan bcp betiklerinin başarısız olmasına neden olabilir.
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, önce bcp out
, ardından bcp in
ve bcp out
'yi kullandığınızda, verilerin düzgün bir şekilde dışa aktarıldığını ve sonlandırıcı değerlerin herhangi bir veri değeri olarak kullanılmadığını doğrulayın. Sonlandırıcı değerleri ile veri değerleri arasındaki çakışmaları önlemek için varsayılan sonlandırıcıları (-t
ve -r
seçenekleri kullanarak) rastgele onaltılık değerlerle geçersiz kılmayı göz önünde bulundurun.
(Kullanıcı) Gerçek dize değeriyle çakışma olasılığını en aza indirmek için uzun ve benzersiz bir sonlandırıcı (herhangi bir bayt veya karakter dizisi) kullanın. Bu, -t
ve -r
seçenekleri kullanılarak yapılabilir.
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.
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;
Komut istemine aşağıdaki komutu girin:
bcp -v
Aşağıdaki örneklerde out
tablosundaki WideWorldImporters.Warehouse.StockItemTransactions
seçeneği gösterilmektedir.
Temel
Bu örnek, StockItemTransactions_character.bcp
adlı bir veri dosyası oluşturur ve karakter biçimi kullanarak tablo verilerini bu dosyaya kopyalar.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
genişletilmiş
Bu örnek,
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.
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>
Aşağıdaki örnekler, daha önce oluşturulan dosyaları kullanarak in
tablosundaki WideWorldImporters.Warehouse.StockItemTransactions_bcp
seçeneğini gösterir.
Temel
Bu örnekte daha önce oluşturulmuş StockItemTransactions_character.bcp
veri dosyası kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
genişletilmiş
Bu örnekte daha önce oluşturulmuş StockItemTransactions_native.bcp
veri dosyası kullanılır. Örnek ayrıca: TABLOCK
ipucunu kullanın; toplu iş boyutunu, söz dizimi hatalarının en fazla sayısını, hata dosyasını ve çıkış dosyasını belirtir.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\bcp\Error_in.log -o D:\bcp\Output_in.log -S -T
Error_in.log
ve Output_in.log
gözden geçirin.
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
Belirli bir satırı kopyalamak için queryout
seçeneğini kullanabilirsiniz. Aşağıdaki örnek, Amy Trefl
tablosundan WideWorldImporters.Application.People
adlı kişinin satırını Amy_Trefl_c.bcp
veri dosyasına kopyalar.
Not
veritabanını tanımlamak için -d
anahtarı kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
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
Aşağıdaki örnek, Warehouse.StockItemTransactions
veritabanındaki WideWorldImporters
tablosu için üç farklı biçim dosyası oluşturur. Oluşturulan her dosyanın içeriğini gözden geçirin.
Komut isteminde aşağıdaki komutları girin:
REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T
REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T
REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T
Not
-x
anahtarını kullanmak için bcp 9.0 istemcisi kullanıyor olmanız gerekir.
bcp 9.0 istemcisini kullanma hakkında bilgi için Açıklamalar bölümüne bakın.
Daha fazla bilgi için bkz. XML Dışı biçim dosyalarını kullanma (SQL Server) ve XML Biçim Dosyaları (SQL Server).
Verileri SQL Server örneğine aktarırken daha önce oluşturulmuş bir biçim dosyası kullanmak için -f
anahtarını in
seçeneğiyle kullanın. Örneğin, aşağıdaki komut StockItemTransactions_character.bcp
bir veri dosyasının içeriğini önceden oluşturulmuş biçim dosyasını kullanarak Warehouse.StockItemTransactions_bcp
StockItemTransactions_c.xml
tablosunun bir kopyasına toplu olarak kopyalar.
Not
-L
anahtarı yalnızca ilk 100 kaydı içeri aktarmak için kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Not
Biçim dosyaları, veri dosyası alanları tablo sütunlarından farklı olduğunda kullanışlıdır; örneğin, sayı, sıralama veya veri türlerinde. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).
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 , ...
Bu örnekte, özel alan ve satır sonlandırıcıları kullanılarak bcp tarafından oluşturulan iki örnek dosya gösterilmektedir.
dbo.T1
veritabanında tempdb
ve ID
olmak üzere iki sütun içeren bir tablo Name
oluşturun.
USE tempdb;
GO
CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20));
GO
INSERT INTO dbo.T1 VALUES (1, N'Natalia');
INSERT INTO dbo.T1 VALUES (2, N'Mark');
INSERT INTO dbo.T1 VALUES (3, N'Randolph');
GO
Özel bir alan sonlandırıcı kullanarak dbo.T1
örnek tablodan bir çıkış dosyası oluşturun.
Bu örnekte sunucu adı MYSERVER
ve -t ,
özel alan sonlandırıcısını belirtir.
bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
Sonuç kümesi aşağıdadır.
1,Natalia
2,Mark
3,Randolph
Özel alan sonlandırıcısı ve özel satır sonlandırıcı kullanarak dbo.T1
örnek tablodan bir çıkış dosyası oluşturun.
Bu örnekte sunucu adı MYSERVER
-t ,
özel alan sonlandırıcısını ve -r :
özel satır sonlandırıcısını belirtir.
bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
Sonuç kümesi aşağıdadır.
1,Natalia:2,Mark:3,Randolph:
Not
Satır sonlandırma işareti, son kayda bile her zaman eklenir. Ancak, alan sonlandırıcısı son alana eklenmez.
Aşağıdaki makaleler, bcpkullanma örneklerini içerir:
Toplu içeri veya toplu dışarı aktarma için veri biçimleri (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)
XML belgeleri (SQL Server) toplu içeri ve dışarı aktarma örnekleri
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
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim
Öğrenme yolu
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization