Bcp ile verileri Linux üzerinde SQL Server'a toplu kopyalama

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu makalede, Linux üzerinde SQL Server örneği ile kullanıcı tarafından belirtilen biçimdeki bir veri dosyası arasında toplu veri kopyalamak için bcp yardımcı programı nasıl kullanılacağı gösterilmektedir.

bcp kullanarak çok sayıda satırı SQL Server tablolara aktarabilir veya SQL Server tablolardaki verileri veri dosyalarına aktarabilirsiniz. Queryout seçeneği dışında bcp Transact-SQL bilgisi gerektirmez. Komut satırı aracıbcp, Linux, Windows veya Docker üzerinde yerel veya bulutta çalışan SQL Server ile ve Azure SQL Veritabanı ile Azure Synapse Analytics ile çalışır.

Bu makalede şunların nasıl yapıldığını görebilirsiniz:

  • bcp in komutunu kullanarak verileri tabloya aktarma
  • bcp out komutunu kullanarak tablodaki verileri dışarı aktarma

SQL Server komut satırı araçlarını yükleme

bcp, Linux üzerinde SQL Server ile otomatik olarak yüklenmeyen SQL Server komut satırı araçlarının bir parçasıdır. Linux makinenize SQL Server komut satırı araçlarını henüz yüklemediyseniz, bunları yüklemeniz gerekir. Araçları yükleme hakkında daha fazla bilgi için aşağıdaki listeden Linux dağıtımınızı seçin:

bcp ile verileri içeri aktarma

Bu öğreticide, yerel SQL Server örneğinde (localhost) bir örnek veritabanı ve tablo oluşturacak ve diskteki bir metin dosyasından örnek tabloya yüklemek için bcp kullanacaksınız.

Örnek veritabanı ve tablo oluşturma

Bu öğreticinin geri kalanında kullanılan basit bir tabloyla örnek veritabanı oluşturarak başlayın.

  1. Linux kutunuzda bir komut terminali açın.

  2. Aşağıdaki komutları kopyalayıp terminal penceresine yapıştırın. Bu komutlar, yerel SQL Serverlocalhost örneğinde örnek veritabanı (BcpSampleDB) ve bir tablo (TestEmployees) oluşturmak için sqlcmd programını kullanır. Komutları çalıştırmadan önce, gerektiğinde sa ve <password>'i değiştirmeyi unutmayın.

Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

veritabanı BcpSampleDBoluşturun:

sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"

TestEmployeesveritabanında tablo BcpSampleDB oluşturun:

sqlcmd -S localhost -U sa -P <password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"

Kaynak veri dosyasını oluşturma

Aşağıdaki komutu kopyalayıp terminal pencerenize yapıştırın. Yerleşik cat komut, üç kayıtlı örnek metin veri dosyası oluşturur ve dosyayı ana dizininizde olarak kaydeder ~/test_data.txt. Kayıtlardaki alanlar virgülle ayrılmıştır.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

Terminal pencerenizde aşağıdaki komutu çalıştırarak veri dosyasının doğru oluşturulduğunu doğrulayabilirsiniz:

cat ~/test_data.txt

Terminal pencerenizde aşağıdakiler görüntülenmelidir:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany

Kaynak veri dosyasından verileri içeri aktarma

Aşağıdaki komutu terminal penceresine kopyalayıp yapıştırın. Bu komut, yerel SQL Server örneğine (bcp) bağlanmak ve veri dosyasındaki (localhost) verileri veritabanındaki tabloya (~/test_data.txt) (TestEmployees) aktarmak için BcpSampleDB kullanır. Komutu çalıştırmadan önce ve gerektiğinde değiştirmeyi sa<password> unutmayın.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

Bu örnekte birlikte bcp kullandığımız komut satırı parametrelerine kısa bir genel bakış aşağıda verilmiştir:

  • -S: bağlanacak SQL Server örneğini belirtir
  • -U: SQL Server'a bağlanmak için kullanılan oturum açma kimliğini belirtir
  • -P: Oturum açma kimliğinin parolasını belirtir
  • -d: bağlanacak veritabanını belirtir
  • -c: Bir karakter veri türü kullanarak işlemler gerçekleştirir
  • -t: alan sonlandırıcısını belirtir. Bu örnek, veri dosyasındaki kayıtlar için alan sonlayıcısı olarak virgül kullanır

Note

Bu örnekte özel satır sonlandırıcısı belirtmiyoruz. Daha önce veri dosyasını oluşturmak için newline komutunu kullandığımızda metin veri dosyasındaki satırlar cat ile doğru şekilde sonlandırıldı.

Terminal pencerenizde aşağıdaki komutu çalıştırarak verilerin başarıyla içeri aktarıldığını doğrulayabilirsiniz. Komutu çalıştırmadan önce ve gerektiğinde değiştirmeyi sa<password> unutmayın.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"

Bu, aşağıdaki sonuçları göstermelidir:

Id          Name                Location
----------- ------------------- -------------------
          1 Jared               Australia
          2 Nikita              India
          3 Tom                 Germany

bcp ile verileri dışarı aktarma

Bu öğreticide, daha önce oluşturduğumuz örnek tablodaki verileri yeni bir veri dosyasına aktarmak için kullanacaksınız bcp .

Aşağıdaki komutu terminal penceresine kopyalayıp yapıştırın. Bu komutbcp, veri veritabanındaki BcpSampleDB tablodan TestEmployees yeni bir veri dosyasına ~/test_export.txtaktarmak için komut satırı aracını kullanır. Komutu çalıştırmadan önce ve gerektiğinde değiştirmeyi sa<password> unutmayın.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

Terminal pencerenizde aşağıdaki komutu çalıştırarak verilerin doğru şekilde dışarı aktarıldığını doğrulayabilirsiniz:

cat ~/test_export.txt

Terminal pencerenizde aşağıdakiler görüntülenmelidir:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany