Menyalin data secara massal dengan bcp ke SQL Server di Linux

Berlaku untuk:SQL Server - Linux

Artikel ini menunjukkan cara menggunakan utilitas bcp untuk menyalin data secara massal antara instans SQL Server di Linux dan file data dalam format yang ditentukan pengguna.

Anda dapat menggunakan bcp untuk mengimpor sejumlah besar baris ke dalam tabel SQL Server atau untuk mengekspor data dari tabel SQL Server ke dalam file data. Kecuali ketika digunakan dengan opsi kueri, bcp tidak memerlukan pengetahuan tentang Transact-SQL. Utilitas baris perintah bcp berfungsi dengan Microsoft SQL Server yang berjalan secara lokal atau di cloud, di Linux, Windows atau Docker dan Azure SQL Database dan Azure Synapse Analytics.

Artikel ini menunjukkan cara:

  • Mengimpor data ke dalam tabel menggunakan bcp in perintah
  • Mengekspor data dari tabel menggunakan bcp out perintah

Menginstal alat baris perintah SQL Server

bcp adalah bagian dari alat baris perintah SQL Server, yang tidak diinstal secara otomatis dengan SQL Server di Linux. Jika Anda belum menginstal alat baris perintah SQL Server di komputer Linux, Anda harus menginstalnya. Untuk informasi selengkapnya tentang cara menginstal alat, pilih distribusi Linux Anda dari daftar berikut:

Mengimpor data dengan bcp

Dalam tutorial ini, Anda membuat database sampel dan tabel pada instans SQL Server lokal (localhost) lalu menggunakan bcp untuk memuat ke dalam tabel sampel dari file teks pada disk.

Membuat sampel database dan tabel

Mari kita mulai dengan membuat database sampel dengan tabel sederhana yang digunakan di sisa tutorial ini.

  1. Pada kotak Linux Anda, buka terminal perintah.

  2. Salin dan tempel perintah berikut ke jendela terminal. Perintah ini menggunakan utilitas baris perintah sqlcmd untuk membuat database sampel (BcpSampleDB) dan tabel (TestEmployees) pada instans SQL Server lokal (localhost). Ingatlah untuk mengganti username dan <your_password> seperlunya sebelum menjalankan perintah.

Buat database BcpSampleDB:

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

Buat tabel TestEmployees di database BcpSampleDB:

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

Membuat file data sumber

Salin dan tempel perintah berikut ke jendela terminal Anda. Kami menggunakan perintah bawaan cat untuk membuat file data teks sampel dengan tiga rekaman menyimpan file di direktori beranda Anda sebagai ~/test_data.txt. Bidang dalam rekaman dibatasi oleh koma.

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

Anda dapat memverifikasi bahwa file data dibuat dengan benar dengan menjalankan perintah berikut di jendela terminal Anda:

cat ~/test_data.txt

Ini akan menampilkan yang berikut ini di jendela terminal Anda:

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

Mengimpor data dari file data sumber

Salin dan tempel perintah berikut ke jendela terminal. Perintah ini menggunakan bcp untuk menyambungkan ke instans SQL Server lokal (localhost) dan mengimpor data dari file data (~/test_data.txt) ke dalam tabel (TestEmployees) dalam database (BcpSampleDB). Ingatlah untuk mengganti nama pengguna dan <your_password> seperlunya sebelum menjalankan perintah.

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

Berikut adalah ringkasan singkat parameter baris perintah yang kami gunakan dengan bcp dalam contoh ini:

  • -S: menentukan instans SQL Server yang akan disambungkan
  • -U: menentukan ID masuk yang digunakan untuk menyambungkan ke SQL Server
  • -P: menentukan kata sandi untuk ID masuk
  • -d: menentukan database yang akan disambungkan
  • -c: melakukan operasi menggunakan jenis data karakter
  • -t: menentukan terminator bidang. Kami menggunakan comma sebagai terminator bidang untuk rekaman dalam file data kami

Catatan

Kami tidak menentukan terminator baris kustom dalam contoh ini. Baris dalam file data teks dihentikan dengan newline benar saat kami menggunakan cat perintah untuk membuat file data sebelumnya.

Anda dapat memverifikasi bahwa data berhasil diimpor dengan menjalankan perintah berikut di jendela terminal Anda. Ingatlah untuk mengganti dan <your_password> seperlunya username sebelum menjalankan perintah.

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

Ini akan menampilkan hasil berikut:

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

Mengekspor data dengan bcp

Dalam tutorial ini, Anda menggunakan bcp untuk mengekspor data dari tabel sampel yang kami buat sebelumnya ke file data baru.

Salin dan tempel perintah berikut ke jendela terminal. Perintah ini menggunakan utilitas baris perintah bcp untuk mengekspor data dari tabel TestEmployees dalam database BcpSampleDB ke file data baru yang disebut ~/test_export.txt. Ingatlah untuk mengganti nama pengguna dan <your_password> seperlunya sebelum menjalankan perintah.

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

Anda dapat memverifikasi bahwa data diekspor dengan benar dengan menjalankan perintah berikut di jendela terminal Anda:

cat ~/test_export.txt

Ini akan menampilkan yang berikut ini di jendela terminal Anda:

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