Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
Toplu kopyalama programı yardımcı programı (bcp) verileri SQL Server örneği ile kullanıcı tarafından belirtilen biçimdeki bir veri dosyası arasında toplu olarak kopyalar.
Remarks
bcp yardımcı programının nerede bulunacağı veya nasıl çalıştırıldığı ve komut istemi yardımcı programları söz dizimi kuralları hakkında bilgi için bkz. SQL komut satırı yardımcı programları (Veritabanı Altyapısı).
Verileri toplu içeri veya dışarı aktarma işlemleri için hazırlama hakkında bilgi için bkz. Verileri toplu dışarı veya içeri aktarma için hazırlama.
Toplu içeri aktarma tarafından gerçekleştirilen satır ekleme işlemlerinin işlem günlüğüne ne zaman kaydedildiği hakkında bilgi için Toplu İçeri Aktarmada Minimum Günlük Kaydı İçin Önkoşullar başlığına bakın.
Karakterler
<,>,|,&ve^özel komut kabuğu karakterleridir ve bunlardan önce kaçış karakteri (^) gelmeli veya bir dizede 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. Daha fazla bilgi için bkz. Ek özel karakterler kullanma.
Yerel veri dosyası desteği
SQL Server'da bcp yardımcı programı, SQL Server 2000 (8.x) ve sonraki sürümlerle başlayan SQL Server sürümleriyle uyumlu yerel veri dosyalarını destekler.
Hesaplanan sütunlar ve zaman damgası sütunları
Hesaplanan veya zaman damgası sütunları için aktarılmakta olan veri dosyasındaki değerler göz ardı edilir ve SQL Server değerleri otomatik olarak atar. Veri dosyası tablodaki hesaplanan veya zaman damgası sütunları için değer içermiyorsa, verileri içeri aktarırken tablodaki hesaplanan veya zaman damgası sütunlarının atlanması gerektiğini belirtmek için bir biçim dosyası kullanın; SQL Server, sütun için değerleri otomatik olarak atar.
Hesaplanan ve zaman damgası sütunları, SQL Server'dan veri dosyasına olağan şekilde toplu olarak kopyalanır.
Boşluk veya tırnak işareti içeren tanımlayıcıları belirtme
SQL Server tanımlayıcıları, eklenmiş boşluklar ve tırnak işaretleri gibi karakterler içerebilir. Bu tür tanımlayıcılar aşağıdaki gibi ele alınmalıdır:
Komut isteminde boşluk veya tırnak işareti içeren bir tanımlayıcı veya dosya adı belirttiğinizde, tanımlayıcıyı tırnak işaretleri ("") içine alın.
Örneğin, aşağıdaki
bcp outkomutuCurrency Types.datadlı bir veri dosyası oluşturur:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -cBoşluk veya tırnak işareti içeren bir veritabanı adı belirtmek için
-qseçeneğini kullanmanız gerekir.Ekli boşluklar veya tırnak işaretleri içeren sahip, tablo veya görünüm adları için şunları yapabilirsiniz:
-qseçeneğini belirtin veyaSahip, tablo veya görünüm adını köşeli parantez (
[]) içine tırnak işaretlerinin içinde alın.
Veri doğrulama
bcp artık veri dosyasındaki geçersiz verilerde yürütülürlerse betiklerin başarısız olmasına neden olabilecek veri doğrulama ve veri denetimlerini zorunlu tutuyor. Örneğin bcp şimdi şunları doğrular:
Kayan veya gerçek veri türlerinin yerel gösterimleri geçerlidir.
Unicode verilerinin bayt uzunluğu çift sayıdır.
SQL Server'ın önceki sürümlerinde toplu olarak içeri aktarılabilen geçersiz veri biçimleri şimdi yüklenemez; ancak önceki sürümlerde istemci geçersiz verilere erişmeye çalışana kadar hata oluşmadı. Eklenen doğrulama, toplu yüklemeden sonra verileri sorgularken sürprizleri en aza indirir.
SQLXML belgelerini toplu dışarı veya içeri aktarma
SQLXML verilerini toplu olarak dışarı veya içeri aktarmak için biçim dosyanızda aşağıdaki veri türlerinden birini kullanın.
| Veri türü | Etki |
|---|---|
SQLCHAR veya SQLVARYCHAR |
Veriler, istemci kodu 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. |
Karakter modu (-c) ve yerel mod (-n) en iyi yöntemleri
Bu bölümde karakter modu (-c) ve yerel mod (-n) için öneriler vardır.
(Yönetici/Kullanıcı) Mümkün olduğunda, ayırıcı sorunu önlemek için yerel biçimi (
-n) kullanın. SQL Server kullanarak dışarı ve içeri aktarmak için yerel biçimi kullanın. Verileri SQL Server olmayan bir veritabanına aktarmayı planlıyorsanız veya-cseçeneğini kullanarak-wSQL Server'dan verileri dışarı aktarın.(Yönetici)
bcp outkullanırken verileri doğrulayın. Örneğin, öncebcp out, ardındanbcp invebcp out'yi kullandığınızda, verilerin düzgün bir şekilde dışa aktarıldığını ve sonlandırıcı değerlerin herhangi bir veri değeri olarak kullanılmadığını doğrulayın. Sonlandırıcı değerleri ile veri değerleri arasındaki çakışmaları önlemek için varsayılan sonlandırıcıları (-tve-rseçenekleri kullanarak) rastgele onaltılık değerlerle geçersiz kılmayı göz önünde bulundurun.(Kullanıcı) Gerçek dize değeriyle çakışma olasılığını en aza indirmek için uzun ve benzersiz bir sonlandırıcı (herhangi bir bayt veya karakter dizisi) kullanın. Bu,
-tve-rseçenekleri kullanılarak yapılabilir.
Ö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.
<server_name> ve diğer yer tutucu değerlerini ortamınızın değerleriyle değiştirin.
Aşağıdaki Transact-SQL betiği, WideWorldImporters.Warehouse.StockItemTransactions tablosunun boş bir kopyasını oluşturur ve ardından birincil anahtar kısıtlaması ekler:
USE WideWorldImporters;
GO
SET NOCOUNT ON;
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
SELECT *
INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
FROM WideWorldImporters.Warehouse.StockItemTransactions
WHERE 1 = 2;
ALTER TABLE Warehouse.StockItemTransactions_bcp
ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp
PRIMARY KEY NONCLUSTERED (StockItemTransactionID ASC);
END
StockItemTransactions_bcp tablosunu gerektiği gibi kesebilirsiniz:
TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;
A. bcp yardımcı programı sürümünü tanımlama
Komut istemine aşağıdaki komutu girin:
bcp -v
B. Tablo satırlarını veri dosyasına kopyalama (güvenilir bağlantıyla)
Aşağıdaki örneklerde out tablosundaki WideWorldImporters.Warehouse.StockItemTransactions seçeneği gösterilmektedir.
Basic
Bu örnek,
StockItemTransactions_character.bcpadlı bir veri dosyası oluşturur ve karakter biçimi kullanarak tablo verilerini bu dosyaya kopyalar.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Bu örnek,
adlı bir veri dosyası oluşturur ve yerel biçimini kullanarak tablo verilerini bu dosyaya kopyalar. Örnek ayrıca: Söz dizimi hatası sayısı üst sınırını, hata dosyasını ve çıkış dosyasını belirtir. Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\bcp\StockItemTransactions_native.bcp -m 1 -n -e D:\bcp\Error_out.log -o D:\bcp\Output_out.log -S <server_name> -T
Error_out.log ve Output_out.loggözden geçirin.
Error_out.log boş olmalıdır.
StockItemTransactions_character.bcp ile StockItemTransactions_native.bcparasındaki dosya boyutlarını karşılaştırın.
C. Tablo satırlarını veri dosyasına kopyalama (karma mod kimlik doğrulaması ile)
Aşağıdaki örnekte, out tablosundaki WideWorldImporters.Warehouse.StockItemTransactions seçeneği gösterilmektedir. Bu örnek, StockItemTransactions_character.bcp adlı bir veri dosyası oluşturur ve karakter biçimi kullanarak tablo verilerini bu dosyaya kopyalar.
Örnekte karma mod kimlik doğrulaması kullandığınız varsayılır ve oturum açma kimliğinizi belirtmek için -U anahtarını kullanmanız gerekir. Ayrıca, yerel bilgisayardaki varsayılan SQL Server örneğine bağlanamıyorsanız sistem adını ve isteğe bağlı olarak bir örnek adını belirtmek için -S anahtarını kullanın.
Komut istemine şu komutu girin: (Sistem sizden parolanızı ister.)
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. Dosyadan tabloya veri kopyalama
Aşağıdaki örnekler, daha önce oluşturulan dosyaları kullanarak in tablosundaki WideWorldImporters.Warehouse.StockItemTransactions_bcp seçeneğini gösterir.
Basic
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_character.bcpveri dosyası kullanılır.Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Bu örnekte daha önce oluşturulmuş
StockItemTransactions_native.bcpveri dosyası kullanılır. Örnek ayrıca ipucunuTABLOCKkullanır ve toplu iş boyutunu, söz dizimi hatalarının maksimum 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 <server_name> -TError_in.logveOutput_in.loggözden geçirin.
E. Belirli bir sütunu veri dosyasına kopyalama
Belirli bir sütunu kopyalamak için queryout seçeneğini kullanabilirsiniz. Aşağıdaki örnek, StockItemTransactionID tablosunun yalnızca Warehouse.StockItemTransactions sütununu bir veri dosyasına kopyalar.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T
F. Belirli bir satırı veri dosyasına kopyalama
Belirli bir satırı kopyalamak için queryout seçeneğini kullanabilirsiniz. Aşağıdaki örnek, Amy Trefl tablosundan WideWorldImporters.Application.People adlı kişinin satırını Amy_Trefl_c.bcpveri dosyasına kopyalar.
Note
veritabanını tanımlamak için -d anahtarı kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
G. Sorgudan veri dosyasına veri kopyalama
Sonuç kümesini bir Transact-SQL deyiminden veri dosyasına kopyalamak için queryout seçeneğini kullanın. Aşağıdaki örnek, adları WideWorldImporters.Application.People tablosundan tam ada göre sıralanmış olarak People.txt veri dosyasına kopyalar.
Note
-t anahtarı virgülle ayrılmış bir dosya oluşturmak için kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. Biçim dosyaları oluşturma
Aşağıdaki örnek, Warehouse.StockItemTransactions veritabanındaki WideWorldImporters tablosu için üç farklı biçim dosyası oluşturur. Oluşturulan her dosyanın içeriğini gözden geçirin.
Komut isteminde aşağıdaki komutları girin:
REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T
REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T
REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T
Note
-x anahtarı yalnızca Windows'ta desteklenir.
Daha fazla bilgi için bkz. XML dışı biçim dosyalarını (SQL Server) ve XML biçim dosyalarını (SQL Server) kullanma.
I. bcp ile toplu aktarımlar için biçim dosyası kullanma
Verileri SQL Server örneğine aktarırken daha önce oluşturulmuş bir biçim dosyası kullanmak için -f anahtarını in seçeneğiyle kullanın. Örneğin, aşağıdaki komut StockItemTransactions_character.bcpbir veri dosyasının içeriğini önceden oluşturulmuş biçim dosyasını kullanarak Warehouse.StockItemTransactions_bcpStockItemTransactions_c.xml tablosunun bir kopyasına toplu olarak kopyalar.
Note
-L anahtarı yalnızca ilk 100 kaydı içeri aktarmak için kullanılır.
Komut istemine aşağıdaki komutu girin:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Note
Biçim dosyaları, veri dosyası alanları tablo sütunlarından farklı olduğunda kullanışlıdır; örneğin, sayı, sıralama veya veri türlerinde. Daha fazla bilgi için bkz. Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server).
J. Kod sayfası belirtme
Aşağıdaki kısmi kod örneği, bcp içeri aktarma işlemini, 65001 kod sayfası belirtilerek gösterir.
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. Özel alan ve satır sonlandırıcıları kullanan örnek çıktı dosyası
Bu örnekte, özel alan ve satır sonlandırıcıları kullanılarak bcp tarafından oluşturulan iki örnek dosya gösterilmektedir.
dbo.T1veritabanındatempdbveIDolmak üzere iki sütun içeren bir tabloNameoluşturun.USE tempdb; GO CREATE TABLE dbo.T1 ( ID INT, [Name] NVARCHAR (20) ); GO INSERT INTO dbo.T1 VALUES (1, N'Natalia'); INSERT INTO dbo.T1 VALUES (2, N'Mark'); INSERT INTO dbo.T1 VALUES (3, N'Randolph'); GOÖzel bir alan sonlandırıcı kullanarak
dbo.T1örnek tablodan bir çıkış dosyası oluşturun.Bu örnekte,
-t ,özel alan sonlandırıcısını belirtir.<server_name>ortamınız için bir değerle değiştirin.bcp dbo.T1 out T1.txt -T -S <server_name> -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,
-t ,özel alan sonlandırıcısını ve-r :özel satır sonlandırıcısını belirtir.<server_name>ifadesini ortamınız için bir değerle değiştirin.bcp dbo.T1 out T1.txt -T -S <server_name> -d tempdb -w -t , -r :Sonuç kümesi aşağıdadır.
1,Natalia:2,Mark:3,Randolph:Note
Satır sonlandırma işareti, son kayda bile her zaman eklenir. Ancak, alan sonlandırıcısı son alana eklenmez.
Ek örnekler
Aşağıdaki makaleler, bcpkullanma örneklerini içerir:
Toplu içeri veya toplu dışarı aktarma için veri biçimleri (SQL Server)
- Verileri içeri veya dışarı aktarmak için yerel biçimi kullanma (SQL Server)
- Verileri içeri veya dışarı aktarmak için karakter biçimini kullanma (SQL Server)
- Verileri İçeri veya Dışarı Aktarmak için Unicode Yerel Biçimi Kullanma (SQL Server)
- Verileri içeri veya dışarı aktarmak için Unicode karakter biçimini kullanma (SQL Server)
Toplu içeri aktarma (SQL Server) sırasında null veya varsayılan değerleri tutma
Verileri toplu içeri aktarırken kimlik değerlerini koruma (SQL Server)
Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server)
- bcp (SQL Server) ile biçim dosyası oluşturma
- Verileri toplu içeri aktarmak için biçim dosyası kullanma (SQL Server)
- Tablo sütununu (SQL Server) atlamak için biçim dosyası kullanma
- Bir veri alanını atlamak için biçim dosyası kullanma (SQL Server)
- Tablo sütunlarını veri dosyası alanlarına (SQL Server) eşlemek için biçim dosyası kullanma
XML belgelerinin toplu içe aktarma ve dışa aktarma örnekleri (SQL Server)
İlgili içerik
- Verileri toplu dışarı veya içeri aktarmaya hazırlama
- TOPLU INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Verileri içeri veya dışarı aktarmak için dosyaları biçimlendirme (SQL Server)
Yardım alın
- SQL için Fikirler: SQL Server'ın geliştirilmesine yönelik önerileriniz mi var?
- Microsoft Soru-Cevap (SQL Server)
- DBA Stack Exchange (etiket sql-server): SQL Server soruları sorun
- Stack Overflow (etiket sql-server): SQL geliştirme sorularının yanıtları
- Microsoft SQL Server Lisans Koşulları ve Bilgileri
- İş kullanıcıları için destek seçenekleri
- Eksel SQL Server yardım ve geri bildirim
SQL belgelerine katkıda bulunma
SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.
Daha fazla bilgi için Bkz. Microsoft Learn belgelerini düzenleme.