bcp yardımcı programını kullanma

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik 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

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 komutu Currency Types.datadlı 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.

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 -c seçeneğini kullanarak -w SQL Server'dan verileri dışarı aktarın.

  • (Yönetici) bcp outkullanırken verileri doğrulayın. Örneğin, önce bcp out, ardından bcp inve 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.

Ö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.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
    
  • Expanded

    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.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
    
  • Expanded

    Bu örnekte daha önce oluşturulmuş StockItemTransactions_native.bcp veri dosyası kullanılır. Örnek ayrıca ipucunu TABLOCK kullanı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> -T
    

    Error_in.log ve Output_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.

  1. dbo.T1 veritabanında tempdb ve IDolmak ü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
    
  2. Ö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
    
  3. Ö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:

Yardım alın

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.