Bagikan melalui


utilitas bcp

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Utilitas program salin massal (bcp) menyalin data secara massal antara instans Microsoft SQL Server dan file data dalam format yang ditentukan pengguna.

Untuk menggunakan bcp di Linux, lihat Menginstal alat baris perintah SQL Server sqlcmd dan bcp di Linux. Untuk informasi terperinci tentang menggunakan bcp dengan Azure Synapse Analytics, lihat Memuat data dengan bcp.

Utilitas bcp dapat digunakan untuk mengimpor sejumlah besar baris baru ke dalam tabel SQL Server atau untuk mengekspor data dari tabel ke dalam file data. Kecuali ketika digunakan dengan queryout opsi , utilitas tidak memerlukan pengetahuan tentang Transact-SQL. Untuk mengimpor data ke dalam tabel, Anda harus menggunakan file format yang dibuat untuk tabel tersebut atau memahami struktur tabel dan jenis data yang valid untuk kolomnya.

Catatan

Jika Anda menggunakan bcp untuk mencadangkan data Anda, buat file format untuk merekam format data. File data bcp tidak menyertakan informasi skema atau format apa pun, jadi jika tabel atau tampilan dihilangkan dan Anda tidak memiliki file format, Anda mungkin tidak dapat mengimpor data.

Untuk konvensi sintaksis yang digunakan untuk sintaks bcp , lihat Konvensi sintaks Transact-SQL.

Unduh versi terbaru utilitas bcp

Alat baris perintah adalah Ketersediaan Umum (GA), namun dirilis dengan paket alat penginstal untuk SQL Server 2019 (15.x) dan versi yang lebih baru.

Windows

Linux dan macOS

Lihat Menginstal alat baris perintah SQL Server sqlcmd dan bcp di Linux untuk instruksi menginstal sqlcmd dan bcp di Linux dan macOS.

Informasi versi

  • Nomor rilis: 15.0.4298.1
  • Nomor build: 15.0.4298.1
  • Tanggal rilis: 7 April 2023

bcp mendukung autentikasi Microsoft Entra, termasuk dukungan autentikasi multifaktor (MFA) untuk Azure SQL Database dan Azure Synapse Analytics.

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Persyaratan sistem

  • Windows 8, Windows 8.1, Windows 10, Windows 11

  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Komponen ini memerlukan Microsoft ODBC Driver 17 terbaru untuk SQL Server.

Untuk memeriksa versi bcp , jalankan bcp -v perintah, dan konfirmasikan bahwa 15.0.4298.1 atau yang lebih baru sedang digunakan.

Catatan

sqlcmd dan bcp juga tersedia di Linux. Untuk informasi selengkapnya, lihat Menginstal alat baris perintah SQL Server sqlcmd dan bcp di Linux.

Sintaks

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 Azure Active Directory 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]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ]
    [-w]
    [-x]

Opsi baris perintah

database_name

Nama database tempat tabel atau tampilan yang ditentukan berada. Jika tidak ditentukan, ini adalah database default untuk pengguna.

Anda juga dapat secara eksplisit menentukan nama database dengan -d.

skema

Nama pemilik tabel atau tampilan. skema bersifat opsional jika pengguna yang melakukan operasi memiliki tabel atau tampilan yang ditentukan. Jika skema tidak ditentukan dan pengguna yang melakukan operasi tidak memiliki tabel atau tampilan yang ditentukan, SQL Server mengembalikan pesan kesalahan, dan operasi dibatalkan.

table_name

Nama tabel tujuan saat mengimpor data ke SQL Server (in), dan tabel sumber saat mengekspor data dari SQL Server (out).

view_name

Nama tampilan tujuan saat menyalin data ke SQL Server (in), dan tampilan sumber saat menyalin data dari SQL Server (out). Hanya tampilan di mana semua kolom merujuk ke tabel yang sama yang dapat digunakan sebagai tampilan tujuan. Untuk informasi selengkapnya tentang pembatasan untuk menyalin data ke dalam tampilan, lihat INSERT.

"kueri"

Kueri Transact-SQL yang mengembalikan tataan hasil. Jika kueri mengembalikan beberapa kumpulan hasil, hanya kumpulan hasil pertama yang disalin ke file data; kumpulan hasil berikutnya diabaikan. Gunakan tanda kutip ganda di sekitar kueri dan tanda kutip tunggal di sekitar apa pun yang disematkan dalam kueri. queryout juga harus ditentukan saat menyalin data secara massal dari kueri.

Kueri dapat mereferensikan prosedur tersimpan selama semua tabel yang dirujuk di dalam prosedur tersimpan ada sebelum menjalankan pernyataan bcp . Misalnya, jika prosedur tersimpan menghasilkan tabel sementara, pernyataan bcp gagal karena tabel sementara hanya tersedia pada waktu proses dan bukan pada waktu eksekusi pernyataan. Dalam hal ini, pertimbangkan untuk menyisipkan hasil prosedur tersimpan ke dalam tabel lalu gunakan bcp untuk menyalin data dari tabel ke dalam file data.

in

Menyalin dari file ke dalam tabel atau tampilan database. Menentukan arah salinan massal.

out

Menyalin dari tabel database atau tampilan ke file. Menentukan arah salinan massal.

Jika Anda menentukan file yang ada, file akan ditimpa. Saat mengekstrak data, utilitas bcp mewakili string kosong sebagai string null dan null sebagai string kosong.

data_file

Jalur lengkap file data. Ketika data diimpor secara massal ke SQL Server, file data berisi data yang akan disalin ke dalam tabel atau tampilan yang ditentukan. Ketika data diekspor secara massal dari SQL Server, file data berisi data yang disalin dari tabel atau tampilan. Jalur dapat memiliki dari 1 hingga 255 karakter. File data dapat berisi maksimum 2^63 - 1 baris.

kueri habis

Menyalin dari kueri dan harus ditentukan hanya saat menyalin data secara massal dari kueri.

format

Membuat file format berdasarkan opsi yang ditentukan (-n, , -c, -watau -N) dan pemisah tabel atau tampilan. Saat menyalin data secara massal, perintah bcp dapat merujuk ke file format, yang menyelamatkan Anda dari memasukkan kembali informasi format secara interaktif. Opsi format ini memerlukan -f opsi; membuat file format XML, juga memerlukan -x opsi . Untuk informasi selengkapnya, lihat Membuat File Format (SQL Server). Anda harus menentukan nul sebagai nilai (format nul).

-a packet_size

Menentukan jumlah byte, per paket jaringan, yang dikirim ke dan dari server. Opsi konfigurasi server dapat diatur dengan menggunakan SQL Server Management Studio (atau prosedur tersimpan sp_configure sistem). Namun, opsi konfigurasi server dapat ditimpa secara individual dengan menggunakan opsi ini. packet_size dapat dari 4.096 byte hingga 65.535 byte; defaultnya adalah 4096.

Peningkatan ukuran paket dapat meningkatkan performa operasi penyalinan massal. Jika paket yang lebih besar diminta tetapi tidak dapat diberikan, default akan digunakan. Statistik performa yang dihasilkan oleh utilitas bcp menunjukkan ukuran paket yang digunakan.

-b batch_size

Menentukan jumlah baris per batch data yang diimpor. Setiap batch diimpor dan dicatat sebagai transaksi terpisah yang mengimpor seluruh batch sebelum diterapkan. Secara default, semua baris dalam file data diimpor sebagai satu batch. Untuk mendistribusikan baris di antara beberapa batch, tentukan batch_size yang lebih kecil dari jumlah baris dalam file data. Jika transaksi untuk batch apa pun gagal, hanya penyisipan dari batch saat ini yang digulung balik. Batch yang sudah diimpor oleh transaksi yang dilakukan tidak terpengaruh oleh kegagalan nanti.

Jangan gunakan opsi ini dengan -h "ROWS_PER_BATCH=<bb>" opsi .

-c

Melakukan operasi menggunakan jenis data karakter. Opsi ini tidak meminta setiap bidang; ini menggunakan karakter sebagai jenis penyimpanan, tanpa awalan dan dengan \t (karakter tab) sebagai pemisah bidang dan \r\n (karakter baris baru) sebagai terminator baris. -c tidak kompatibel dengan -w.

Untuk informasi selengkapnya, lihat Menggunakan format karakter untuk mengimpor atau mengekspor data (SQL Server).

-C { ACP | OEM | RAW | code_page }

Menentukan halaman kode data dalam file data. code_page hanya relevan jika data berisi kolom karakter, varchar, atau teks dengan nilai karakter lebih besar dari 127 atau kurang dari 32.

Catatan

Sebaiknya tentukan nama kolajek untuk setiap kolom dalam file format, kecuali jika Anda ingin opsi 65001 memiliki prioritas atas spesifikasi halaman kolab/kode.

Nilai halaman kode Deskripsi
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Halaman kode default yang digunakan oleh klien. Ini adalah halaman kode default yang digunakan jika -C tidak ditentukan.
RAW Tidak ada konversi dari satu halaman kode ke halaman lain yang terjadi. Ini adalah opsi tercepat karena tidak ada konversi yang terjadi.
code_page Nomor halaman kode tertentu; misalnya, 850.

Versi sebelum versi 13 (SQL Server 2016 (13.x)) tidak mendukung halaman kode 65001 (pengodean UTF-8). Versi yang dimulai dengan 13 dapat mengimpor pengodean UTF-8 ke versi SQL Server yang lebih lama.

-d database_name

Menentukan database yang akan disambungkan. Secara default, bcp tersambung ke database default pengguna. Jika -d <database_name> dan tiga nama bagian (database_name.schema.table, diteruskan sebagai parameter pertama ke bcp) ditentukan, kesalahan terjadi karena Anda tidak dapat menentukan nama database dua kali. Jika database_name dimulai dengan tanda hubung (-) atau garis miring (/), jangan tambahkan spasi antara -d dan nama database.

-D

Menyebabkan nilai yang diteruskan ke bcp -S opsi ditafsirkan sebagai nama sumber data (DSN). DSN dapat digunakan untuk menyematkan opsi driver untuk menyederhanakan baris perintah, menerapkan opsi driver yang tidak dapat diakses dari baris perintah seperti MultiSubnetFailover, atau untuk membantu melindungi kredensial sensitif agar tidak dapat ditemukan sebagai argumen baris perintah. Untuk informasi selengkapnya, lihat Dukungan DSN di sqlcmd dan bcp di Menyambungkan dengan sqlcmd.

-e err_file

Menentukan jalur lengkap file kesalahan yang digunakan untuk menyimpan baris apa pun yang tidak dapat ditransfer utilitas bcp dari file ke database. Pesan kesalahan dari perintah bcp masuk ke stasiun kerja pengguna. Jika opsi ini tidak digunakan, file kesalahan tidak dibuat.

Jika err_file dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -e dan nilai err_file .

-E

Menentukan bahwa nilai identitas atau nilai dalam file data yang diimpor akan digunakan untuk kolom identitas. Jika -E tidak diberikan, nilai identitas untuk kolom ini dalam file data yang sedang diimpor diabaikan, dan SQL Server secara otomatis menetapkan nilai unik berdasarkan nilai benih dan kenaikan yang ditentukan selama pembuatan tabel. Untuk informasi selengkapnya, lihat DBCC CHECKIDENT.

Jika file data tidak berisi nilai untuk kolom identitas dalam tabel atau tampilan, gunakan file format untuk menentukan bahwa kolom identitas dalam tabel atau tampilan harus dilewati saat mengimpor data; SQL Server secara otomatis menetapkan nilai unik untuk kolom tersebut.

Opsi -E ini memiliki persyaratan izin khusus. Untuk informasi selengkapnya, lihat "Komentar" nanti di artikel ini.

-f format_file

Menentukan jalur lengkap file format. Arti dari opsi ini tergantung pada lingkungan tempat opsi digunakan, sebagai berikut:

  • Jika -f digunakan dengan format opsi , format_file yang ditentukan dibuat untuk tabel atau tampilan yang ditentukan. Untuk membuat file format XML, tentukan -x juga opsi . Untuk informasi selengkapnya, lihat Membuat File Format (SQL Server).

  • Jika digunakan dengan in opsi atau out , -f memerlukan file format yang ada.

    Catatan

    Menggunakan file format dengan in opsi atau out bersifat opsional. Dengan tidak adanya -f opsi, jika -n, , -c-w, atau -N tidak ditentukan, perintah meminta informasi format dan memungkinkan Anda menyimpan respons Anda dalam file format (yang nama file defaultnya adalah bcp.fmt).

Jika format_file dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -f dan nilai format_file .

-F first_row

Menentukan jumlah baris pertama yang akan diekspor dari tabel atau mengimpor dari file data. Parameter ini memerlukan nilai yang lebih besar dari (>) 0 tetapi kurang dari (<) atau sama dengan (=) baris jumlah total. Dengan tidak adanya parameter ini, defaultnya adalah baris pertama file.

first_row dapat berupa bilangan bulat positif dengan nilai hingga 2^63-1. -F first_row berbasis 1.

-G

Berlaku untuk: Azure SQL Database dan Azure Synapse Analytics saja.

Sakelar ini digunakan oleh klien saat menyambungkan ke Azure SQL Database atau Azure Synapse Analytics untuk menentukan bahwa pengguna diautentikasi dengan ID Microsoft Entra. Sakelar -G memerlukan versi 14.0.3008.27 atau versi yang lebih baru. Untuk menentukan versi Anda, jalankan bcp -v. Untuk informasi selengkapnya, lihat Menggunakan autentikasi Microsoft Entra dengan SQL Database atau Azure Synapse Analytics.

Penting

Autentikasi interaktif Microsoft Entra saat ini tidak didukung di Linux atau macOS. Autentikasi terintegrasi Microsoft Entra memerlukan Microsoft ODBC Driver 17 untuk SQL Server versi 17.6.1 dan versi yang lebih baru, dan lingkungan Kerberos yang dikonfigurasi dengan benar.

Tip

Untuk memeriksa apakah versi bcp Anda menyertakan dukungan untuk autentikasi Microsoft Entra, ketik bcp --help dan verifikasi bahwa Anda melihat -G dalam daftar argumen yang tersedia.

  • Nama pengguna dan kata sandi Microsoft Entra

    Saat Anda ingin menggunakan nama pengguna dan kata sandi Microsoft Entra, Anda dapat memberikan -G opsi dan juga menggunakan nama pengguna dan kata sandi dengan menyediakan -U opsi dan -P .

    Contoh berikut mengekspor data menggunakan kredensial nama pengguna dan kata sandi Microsoft Entra. Contoh mengekspor tabel bcptest dari database testdb dari server aadserver.database.windows.net Azure dan menyimpan data dalam file c:\last\data1.dat:

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    

    Contoh berikut mengimpor data menggunakan kredensial pengguna Microsoft Entra. Contoh mengimpor data dari file c:\last\data1.dat ke dalam tabel bcptest untuk database testdb di server aadserver.database.windows.net Azure menggunakan nama pengguna dan kata sandi Microsoft Entra:

    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 terintegrasi

    Untuk autentikasi terintegrasi Microsoft Entra, berikan -G opsi tanpa nama pengguna atau kata sandi. Konfigurasi ini mengharuskan akun pengguna Windows saat ini (akun yang dijalankan perintah bcp ) digabungkan dengan ID Microsoft Entra:

    Contoh berikut mengekspor data menggunakan autentikasi terintegrasi Microsoft Entra. Contoh mengekspor tabel bcptest dari database testdb di server aadserver.database.windows.net logis dan menyimpan data dalam file c:\last\data2.dat, menggunakan kredensial Windows yang digabungkan dengan ID Microsoft Entra:

    bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    

    Contoh berikut mengimpor data menggunakan autentikasi terintegrasi Microsoft Entra. Contoh mengimpor data dari tabel file ke dalam tabel c:\last\data2.dat bcptest dalam database testdb di server aadserver.database.windows.netlogis, menggunakan kredensial Windows yang terfederasi dengan ID Microsoft Entra:

    bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    
  • Identitas Layanan Terkelola Microsoft Entra

    Penting

    bcp digabungkan erat dengan pengemudi. Versi utama bcp dan driver yang dibuat DSN harus sama. Untuk menentukan versi Anda, jalankan bcp -v.

    Mengekspor data melalui bcp menggunakan Identitas Layanan Terkelola di Windows mengharuskan DSN dikonfigurasi.

    Untuk mengonfigurasi DSN pada komputer yang menjalankan Windows:

    1. Tekan tombol Windows pada keyboard Anda
    2. Ketik ODBC dan pilih versi Administrator Sumber Data ODBC yang sesuai
    3. Pilih tab DSN Pengguna atau DSN Sistem
    4. Pilih Tambahkan dan ikuti perintah
    5. Saat dimintai jenis autentikasi, pilih Autentikasi Identitas Layanan Terkelola Azure
    6. Jika Anda memiliki Identitas Terkelola yang Ditetapkan Pengguna, tempel identitas Object (principal) ID ke dalam kotak ID Masuk di bagian bawah tab autentikasi
    7. Lanjutkan mengikuti perintah untuk mengonfigurasi DSN Anda

    Untuk panduan lengkap termasuk cuplikan layar, lihat Membuat dan mengedit DSN di UI.

    Setelah DSN dikonfigurasi, bcp kemudian dapat dipanggil menggunakan -D bendera untuk menunjukkan nilai yang diteruskan -S adalah DSN.

    bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
    

  • Token akses ID Microsoft Entra

    Pengguna bcp (17.8 dan versi yang lebih baru) juga dapat mengautentikasi dengan token. Contoh berikut menggunakan PowerShell di Linux untuk mengambil token akses.

    Contoh ini mengambil token akses dan menempatkannya ke dalam file untuk mengekspor data menggunakan identitas terkelola yang ditetapkan sistem.

    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
    

    Contoh ini meneruskan Client ID ke -AccountId parameter Connect-AzAccount untuk mengambil token akses dan menempatkannya ke dalam file token. Token kemudian digunakan untuk mengekspor data menggunakan Identitas Terkelola yang Ditetapkan Pengguna yang ditentukan.

    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 interaktif

    Autentikasi interaktif Microsoft Entra, tersedia untuk semua Azure SQL dan SQL Server 2022+, memungkinkan Anda menggunakan dialog interaktif untuk mengautentikasi, yang juga mendukung autentikasi multifaktor.

    Autentikasi interaktif Microsoft Entra memerlukan versi bcp 15.0.1000.34 atau yang lebih baru serta ODBC versi 17.2 atau yang lebih baru.

    Untuk mengaktifkan autentikasi interaktif, berikan -G opsi dengan nama pengguna (-U) saja, dan tanpa kata sandi.

    Contoh berikut mengekspor data menggunakan autentikasi interaktif Microsoft Entra, yang mencakup menentukan nama pengguna akun Microsoft Entra.

    Mode interaktif mengharuskan kata sandi dimasukkan secara manual, atau untuk akun dengan autentikasi multifaktor diaktifkan, selesaikan metode autentikasi MFA yang dikonfigurasi.

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
    

    Jika menggunakan pengguna Microsoft Entra yang merupakan akun Windows dari domain federasi, nama pengguna yang dimasukkan di baris perintah harus berisi domainnya (misalnya, joe@contoso.com):

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
    

    Jika pengguna tamu ada di penyewa Microsoft Entra tertentu dan merupakan bagian dari grup yang ada di SQL Database yang memiliki izin database untuk menjalankan perintah bcp , alias pengguna tamu mereka digunakan (misalnya, keith0@adventure-works.com).

-h "petunjuk [, ... n]"

Menentukan petunjuk atau petunjuk yang akan digunakan selama impor data secara massal ke dalam tabel atau tampilan.

  • ORDER (kolom [ASC | DESC] [, ...n])

    Urutan pengurutan data dalam file data. Performa impor massal ditingkatkan jika data yang diimpor diurutkan sesuai dengan indeks terkluster pada tabel, jika ada. Jika file data diurutkan dalam urutan yang berbeda, yaitu, selain urutan kunci indeks berkluster, atau jika tidak ada indeks berkluster pada tabel, klausa ORDER diabaikan. Nama kolom yang disediakan harus berupa nama kolom yang valid dalam tabel tujuan. Secara default, bcp mengasumsikan file data tidak diurutkan. Untuk impor massal yang dioptimalkan, SQL Server juga memvalidasi bahwa data yang diimpor diurutkan.

  • ROWS_PER_BATCH = bb

    Jumlah baris data per batch (sebagai bb). Digunakan saat -b tidak ditentukan, mengakibatkan seluruh file data dikirim ke server sebagai satu transaksi. Server mengoptimalkan beban massal sesuai dengan nilai bb. Secara default, ROWS_PER_BATCH tidak diketahui.

  • KILOBYTES_PER_BATCH = cc

    Perkiraan jumlah kilobyte data per batch (sebagai cc). Secara default, KILOBYTES_PER_BATCH tidak diketahui.

  • TABLOCK

    Menentukan bahwa kunci tingkat tabel pembaruan massal diperoleh selama durasi operasi beban massal; jika tidak, kunci tingkat baris diperoleh. Petunjuk ini secara signifikan meningkatkan performa karena menahan kunci selama durasi operasi penyalinan massal mengurangi pertikaian kunci pada tabel. Tabel dapat dimuat secara bersamaan dari beberapa klien jika tabel tidak memiliki indeks dan TABLOCK ditentukan. Secara default, perilaku penguncian ditentukan oleh kunci tabel opsi tabel pada beban massal.

    Catatan

    Jika tabel target adalah indeks penyimpan kolom berkluster, petunjuk TABLOCK tidak diperlukan untuk memuat oleh beberapa klien bersamaan karena setiap utas bersamaan diberi grup baris terpisah dalam indeks dan memuat data ke dalamnya. Silakan lihat artikel konseptual indeks penyimpan kolom untuk detailnya,

  • CHECK_CONSTRAINTS

    Menentukan bahwa semua batasan pada tabel target atau tampilan harus diperiksa selama operasi impor massal. Tanpa petunjuk CHECK_CONSTRAINTS, batasan CHECK, dan FOREIGN KEY diabaikan, dan setelah operasi batasan pada tabel ditandai sebagai tidak tepercaya.

    Catatan

    Batasan UNIK, KUNCI PRIMER, dan BUKAN NULL selalu diberlakukan.

    Pada titik tertentu, Anda perlu memeriksa batasan pada seluruh tabel. Jika tabel tidak ada gunanya sebelum operasi impor massal, biaya validasi ulang batasan dapat melebihi biaya penerapan batasan CHECK ke data bertahap. Oleh karena itu, kami menyarankan agar Anda biasanya mengaktifkan pemeriksaan batasan selama impor massal inkremental.

    Situasi di mana Anda mungkin ingin batasan dinonaktifkan (perilaku default) adalah jika data input berisi baris yang melanggar batasan. Dengan batasan CHECK dinonaktifkan, Anda dapat mengimpor data lalu menggunakan pernyataan Transact-SQL untuk menghapus data yang tidak valid.

    Catatan

    bcp sekarang memberlakukan validasi data dan pemeriksaan data yang dapat menyebabkan skrip gagal jika dijalankan pada data yang tidak valid dalam file data.

    Catatan

    Sakelar -m max_errors tidak berlaku untuk pemeriksaan batasan.

  • FIRE_TRIGGERS

    Ketika ditentukan dengan dalam argumen, setiap pemicu sisipan yang ditentukan pada tabel tujuan berjalan selama operasi penyalinan massal. Jika FIRE_TRIGGERS tidak ditentukan, tidak ada pemicu sisipan yang akan berjalan. FIRE_TRIGGERS diabaikan untuk outargumen , , queryoutdan format .

-i input_file

Menentukan nama file respons, yang berisi respons terhadap pertanyaan prompt perintah untuk setiap bidang data saat salinan massal dilakukan menggunakan mode interaktif (-n, -c, , -watau -N tidak ditentukan).

Jika input_file dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -i dan nilai input_file .

-k

Menentukan bahwa kolom kosong harus mempertahankan nilai null selama operasi, daripada memiliki nilai default untuk kolom yang disisipkan. Untuk informasi selengkapnya, lihat Menyimpan nilai null atau default selama impor massal (SQL Server).

-K application_intent

Menyatakan jenis beban kerja aplikasi saat menyambungkan ke server. Satu-satunya nilai yang dimungkinkan adalah ReadOnly. Jika -K tidak ditentukan, utilitas bcp tidak mendukung konektivitas ke replika sekunder dalam grup ketersediaan AlwaysOn. Untuk informasi selengkapnya, lihat Membongkar beban kerja baca-saja ke replika sekunder grup ketersediaan AlwaysOn.

- Aku login_timeout

Menentukan batas waktu masuk. Opsi -l menentukan jumlah detik sebelum waktu masuk ke SQL Server habis saat Anda mencoba menyambungkan ke server. Batas waktu masuk default adalah 15 detik. Batas waktu masuk harus berupa angka antara 0 dan 65534. Jika nilai yang disediakan tidak numerik atau tidak termasuk dalam rentang tersebut, bcp menghasilkan pesan kesalahan. Nilai 0 menentukan batas waktu tak terbatas.

-L last_row

Menentukan jumlah baris terakhir yang akan diekspor dari tabel atau mengimpor dari file data. Parameter ini memerlukan nilai yang lebih besar dari (>) 0 tetapi kurang dari (<) atau sama dengan (=) jumlah baris terakhir. Dengan tidak adanya parameter ini, defaultnya adalah baris terakhir file.

last_row dapat berupa bilangan bulat positif dengan nilai hingga 2^63-1.

-m max_errors

Menentukan jumlah maksimum kesalahan sintaks yang dapat terjadi sebelum operasi bcp dibatalkan. Kesalahan sintaks menyiratkan kesalahan konversi data ke jenis data target. Total max_errors mengecualikan kesalahan apa pun yang hanya dapat dideteksi di server, seperti pelanggaran batasan.

Baris yang tidak dapat disalin oleh utilitas bcp diabaikan dan dihitung sebagai satu kesalahan. Jika opsi ini tidak disertakan, defaultnya adalah 10.

Catatan

Opsi ini -m juga tidak berlaku untuk mengonversi jenis data uang atau bigint .

-n

Melakukan operasi penyalinan massal menggunakan jenis data asli (database) data. Opsi ini tidak meminta setiap bidang; ini menggunakan nilai asli.

Untuk informasi selengkapnya, lihat Menggunakan format asli untuk mengimpor atau mengekspor data (SQL Server).

-N

Melakukan operasi penyalinan massal menggunakan jenis data asli (database) data untuk data noncharacter, dan karakter Unicode untuk data karakter. Opsi ini menawarkan alternatif performa yang lebih tinggi untuk -w opsi , dan dimaksudkan untuk mentransfer data dari satu instans SQL Server ke instans lain menggunakan file data. Ini tidak meminta setiap bidang. Gunakan opsi ini saat Anda mentransfer data yang berisi karakter ansi yang diperluas dan Anda ingin memanfaatkan performa mode asli.

Untuk informasi selengkapnya, lihat Menggunakan Format Asli Unicode untuk Mengimpor atau Mengekspor Data (SQL Server).

Jika Anda mengekspor lalu mengimpor data ke skema tabel yang sama dengan menggunakan bcp dengan -N, Anda mungkin melihat peringatan pemotongan jika ada kolom karakter non-Unicode panjang tetap (misalnya, karakter(10)).

Peringatan dapat diabaikan. Salah satu cara untuk mengatasi peringatan ini adalah dengan menggunakan -n alih-alih -N.

-o output_file

Menentukan nama file yang menerima output yang dialihkan dari prompt perintah.

Jika output_file dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -o dan nilai output_file .

Kata sandi -P

Menentukan kata sandi untuk ID masuk. Jika opsi ini tidak digunakan, perintah bcp akan meminta kata sandi. Jika opsi ini digunakan di akhir prompt perintah tanpa kata sandi, bcp menggunakan kata sandi default (NULL).

Penting

Jangan gunakan kata sandi kosong. Gunakan kata sandi yang kuat.

Untuk menutupi kata sandi Anda, jangan tentukan -P opsi bersama dengan -U opsi . Sebagai gantinya, setelah menentukan bcp bersama dengan -U opsi dan sakelar lainnya (jangan tentukan -P), tekan ENTER, dan perintah akan meminta kata sandi. Metode ini memastikan bahwa kata sandi Anda diselubungi saat dimasukkan.

Jika kata sandi dimulai dengan tanda hubung (-) atau garis miring (/), jangan tambahkan spasi antara -P dan nilai kata sandi .

-q

Menjalankan pernyataan SET QUOTED_IDENTIFIER ON dalam koneksi antara utilitas bcp dan instans SQL Server. Gunakan opsi ini untuk menentukan database, pemilik, tabel, atau nama tampilan yang berisi spasi atau tanda kutip tunggal. Sertakan seluruh tabel tiga bagian atau nama tampilan dalam tanda kutip ("").

Untuk menentukan nama database yang berisi tanda kutip spasi atau tunggal, Anda harus menggunakan opsi .-q

-q tidak berlaku untuk nilai yang diteruskan ke -d.

Untuk informasi selengkapnya, lihat Keterangan, nanti di artikel ini.

-r row_term

Menentukan terminator baris. Defaultnya adalah \n (karakter baris baru). Gunakan parameter ini untuk mengambil alih terminator baris default. Untuk informasi selengkapnya, lihat Menentukan Terminator Bidang dan Baris (SQL Server).

Jika Anda menentukan terminator baris dalam notasi heksadesimal dalam perintah bcp , nilai dipotong pada 0x00. Misalnya, jika Anda menentukan 0x410041, 0x41 digunakan.

Jika row_term dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -r dan nilai row_term .

R-

Menentukan bahwa data mata uang, tanggal, dan waktu disalin secara massal ke SQL Server menggunakan format regional yang ditentukan untuk pengaturan lokal komputer klien. Secara default, pengaturan regional diabaikan.

-S server_name [\instance_name]

Menentukan instans SQL Server yang akan disambungkan. Jika tidak ada server yang ditentukan, utilitas bcp tersambung ke instans default SQL Server di komputer lokal. Opsi ini diperlukan ketika perintah bcp dijalankan dari komputer jarak jauh di jaringan atau instans bernama lokal. Untuk menyambungkan ke instans default SQL Server di server, tentukan hanya server_name. Untuk menyambungkan ke instans SQL Server bernama, tentukan instance_name server_name**\**.

-t field_term

Menentukan terminator bidang. Defaultnya adalah \t (karakter tab). Gunakan parameter ini untuk mengambil alih terminator bidang default. Untuk informasi selengkapnya, lihat Menentukan Terminator Bidang dan Baris (SQL Server).

Jika Anda menentukan terminator bidang dalam notasi heksadesimal dalam perintah bcp , nilai dipotong pada 0x00. Misalnya, jika Anda menentukan 0x410041, 0x41 digunakan.

Jika field_term dimulai dengan tanda hubung (-) atau garis miring (/), jangan sertakan spasi antara -t dan nilai field_term .

-T

Menentukan bahwa utilitas bcp tersambung ke SQL Server dengan koneksi tepercaya menggunakan keamanan terintegrasi. Kredensial keamanan pengguna jaringan, login_id, dan kata sandi tidak diperlukan. Jika -T tidak ditentukan, Anda perlu menentukan -U dan -P berhasil tersambung.

Penting

Ketika utilitas bcp tersambung ke SQL Server dengan koneksi tepercaya menggunakan keamanan terintegrasi, gunakan -T opsi (koneksi tepercaya) alih-alih kombinasi nama pengguna dan kata sandi. Saat utilitas bcp tersambung ke SQL Database atau Azure Synapse Analytics, menggunakan autentikasi Windows atau autentikasi Microsoft Entra tidak didukung. -U Gunakan opsi dan -P .

-U login_id

Menentukan ID masuk yang digunakan untuk menyambungkan ke SQL Server.

-v

Melaporkan nomor versi utilitas bcp dan hak cipta.

-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)

Melakukan operasi penyalinan massal menggunakan jenis data dari versi SQL Server yang lebih lama. Opsi ini tidak meminta setiap bidang; ini menggunakan nilai default.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) dan 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)

Misalnya, untuk menghasilkan data untuk jenis yang tidak didukung oleh SQL Server 2000 (8.x), tetapi diperkenalkan di versi SQL Server yang lebih baru, gunakan opsi .-V80

Untuk informasi selengkapnya, lihat Mengimpor data format asli dan karakter dari versi SQL Server yang lebih lama.

w-

Melakukan operasi salin massal menggunakan karakter Unicode. Opsi ini tidak meminta setiap bidang; ini menggunakan nchar sebagai jenis penyimpanan, tidak ada awalan, \t (karakter tab) sebagai pemisah bidang, dan \n (karakter baris baru) sebagai terminator baris. -w tidak kompatibel dengan -c.

Untuk informasi selengkapnya, lihat Menggunakan format karakter unicode untuk mengimpor atau mengekspor data (SQL Server).

-x

Opsi ini digunakan dengan format opsi dan -f format_file , dan menghasilkan file format berbasis XML alih-alih file format non-XML default. -x tidak berfungsi saat mengimpor atau mengekspor data. Ini menghasilkan kesalahan jika digunakan tanpa keduanya format dan -f format_file.

Keterangan

  • Klien bcp 13.0 diinstal saat Anda menginstal alat Microsoft SQL Server 2019 (15.x). Jika alat diinstal untuk beberapa versi SQL Server, tergantung pada urutan nilai variabel lingkungan PATH, Anda mungkin menggunakan klien bcp sebelumnya alih-alih klien bcp 13.0. Variabel lingkungan ini mendefinisikan kumpulan direktori yang digunakan oleh Windows untuk mencari file yang dapat dieksekusi. Untuk menemukan versi mana yang Anda gunakan, jalankan bcp -v perintah di Prompt Perintah Windows. Untuk informasi tentang cara mengatur jalur perintah dalam variabel lingkungan PATH, lihat Variabel Lingkungan atau cari Variabel Lingkungan di Bantuan Windows.

    Untuk memastikan versi terbaru utilitas bcp berjalan, Anda perlu menghapus versi utilitas bcp yang lebih lama.

    Untuk menentukan di mana semua versi utilitas bcp diinstal, ketik prompt perintah:

    where bcp.exe
    
  • Utilitas bcp juga dapat diunduh secara terpisah dari Paket Fitur Microsoft SQL Server 2016. Pilih atau ENU\x64\MsSqlCmdLnUtils.msi ENU\x86\MsSqlCmdLnUtils.msi.

  • File format XML hanya didukung ketika alat SQL Server diinstal bersama dengan SQL Server Native Client.

  • Untuk informasi tentang tempat menemukan atau cara menjalankan utilitas bcp dan tentang konvensi sintaksis utilitas prompt perintah, lihat Utilitas Prompt Perintah SQL (Mesin Database).

  • Untuk informasi tentang menyiapkan data untuk operasi impor atau ekspor massal, lihat Menyiapkan data untuk ekspor atau impor massal.

  • Untuk informasi tentang kapan operasi penyisipan baris yang dilakukan oleh impor massal dicatat dalam log transaksi, lihat Prasyarat untuk pengelogan minimal dalam impor massal.

  • Menggunakan karakter khusus tambahan

    Karakter <, , >|, &, dan ^ adalah karakter shell perintah khusus, dan harus didahului oleh karakter escape (^), atau diapit dalam tanda kutip saat digunakan dalam String (misalnya, "StringContaining&Symbol"). Jika Anda menggunakan tanda kutip untuk mengapit string yang berisi salah satu karakter khusus, tanda kutip diatur sebagai bagian dari nilai variabel lingkungan.

Dukungan file data asli

Di SQL Server, utilitas bcp mendukung file data asli yang kompatibel dengan versi SQL Server yang dimulai dengan SQL Server 2000 (8.x) dan yang lebih baru.

Kolom komputasi dan kolom tanda waktu

Nilai dalam file data yang diimpor untuk kolom komputasi atau tanda waktu diabaikan, dan SQL Server secara otomatis menetapkan nilai. Jika file data tidak berisi nilai untuk kolom komputasi atau tanda waktu dalam tabel, gunakan file format untuk menentukan bahwa kolom komputasi atau tanda waktu dalam tabel harus dilewati saat mengimpor data; SQL Server secara otomatis menetapkan nilai untuk kolom.

Kolom komputasi dan tanda waktu disalin secara massal dari SQL Server ke file data seperti biasa.

Tentukan pengidentifikasi yang berisi spasi atau tanda kutip

Pengidentifikasi SQL Server dapat menyertakan karakter seperti spasi yang disematkan dan tanda kutip. Pengidentifikasi tersebut harus diperlakukan sebagai berikut:

  • Saat Anda menentukan pengidentifikasi atau nama file yang menyertakan spasi atau tanda kutip pada prompt perintah, sertakan pengidentifikasi dalam tanda kutip ("").

    Misalnya, perintah berikut bcp out membuat file data bernama Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Untuk menentukan nama database yang berisi spasi atau tanda kutip, Anda harus menggunakan opsi .-q

  • Untuk nama pemilik, tabel, atau tampilan yang berisi spasi atau tanda kutip yang disematkan, Anda dapat:

    • Tentukan -q opsi, atau

    • Sertakan pemilik, tabel, atau nama tampilan dalam tanda kurung siku ([]) di dalam tanda kutip.

Validasi Data

bcp sekarang memberlakukan validasi data dan pemeriksaan data yang dapat menyebabkan skrip gagal jika dijalankan pada data yang tidak valid dalam file data. Misalnya, bcp sekarang memverifikasi bahwa:

  • Representasi asli dari jenis data float atau real valid.

  • Data Unicode memiliki panjang byte genap.

Formulir data yang tidak valid yang dapat diimpor secara massal di versi SQL Server sebelumnya dapat gagal dimuat sekarang; sedangkan, dalam versi sebelumnya, kegagalan tidak terjadi sampai klien mencoba mengakses data yang tidak valid. Validasi yang ditambahkan meminimalkan kejutan saat mengkueri data setelah beban massal.

Mengekspor atau mengimpor dokumen SQLXML secara massal

Untuk mengekspor atau mengimpor data SQLXML secara massal, gunakan salah satu jenis data berikut dalam file format Anda.

Jenis Data Efek
SQLCHAR atau SQLVARYCHAR Data dikirim di halaman kode klien atau di halaman kode yang disiratkan oleh kolase). Efeknya sama dengan menentukan -c sakelar tanpa menentukan file format.
SQLNCHAR atau SQLNVARCHAR Data dikirim sebagai Unicode. Efeknya sama dengan menentukan -w sakelar tanpa menentukan file format.
SQLBINARY atau SQLVARYBIN Data dikirim tanpa konversi apa pun.

Izin

bcp out Operasi memerlukan izin SELECT pada tabel sumber.

bcp in Operasi minimal memerlukan izin SELECT/INSERT pada tabel target. Selain itu, izin ALTER TABLE diperlukan jika salah satu kondisi berikut ini benar:

  • Batasan ada dan petunjuk CHECK_CONSTRAINTS tidak ditentukan.

    Catatan

    Menonaktifkan batasan adalah perilaku default. Untuk mengaktifkan batasan secara eksplisit, gunakan -h opsi dengan petunjuk CHECK_CONSTRAINTS.

  • Pemicu ada dan petunjuk FIRE_TRIGGER tidak ditentukan.

    Catatan

    Secara default, pemicu tidak diaktifkan. Untuk mengaktifkan pemicu secara eksplisit, gunakan -h opsi dengan petunjuk FIRE_TRIGGERS.

  • Anda menggunakan -E opsi untuk mengimpor nilai identitas dari file data.

Catatan

Memerlukan izin ALTER TABLE pada tabel target baru di SQL Server 2005 (9.x). Persyaratan baru ini dapat menyebabkan skrip bcp yang tidak memberlakukan pemicu dan pemeriksaan batasan gagal jika akun pengguna tidak memiliki izin ubah tabel untuk tabel target.

Mode karakter (-c) dan praktik terbaik mode asli (-n)

Bagian ini memiliki rekomendasi untuk mode karakter (-c) dan mode asli (-n).

  • (Administrator/Pengguna) Jika memungkinkan, gunakan format asli (-n) untuk menghindari masalah pemisah. Gunakan format asli untuk mengekspor dan mengimpor menggunakan SQL Server. Ekspor data dari SQL Server menggunakan -c opsi atau -w jika data akan diimpor ke database non-SQL Server.

  • (Administrator) Verifikasi data saat menggunakan BCP OUT. Misalnya, saat Anda menggunakan BCP OUT, BCP IN, lalu BCP OUT memverifikasi bahwa data diekspor dengan benar dan nilai terminator tidak digunakan sebagai bagian dari beberapa nilai data. Pertimbangkan untuk mengambil alih terminator default (menggunakan -t dan -r opsi) dengan nilai heksadesimal acak untuk menghindari konflik antara nilai terminator dan nilai data.

  • (Pengguna) Gunakan terminator panjang dan unik (urutan byte atau karakter apa pun) untuk meminimalkan kemungkinan konflik dengan nilai string aktual. Ini dapat dilakukan dengan menggunakan -t opsi dan -r .

Contoh

Contoh di bagian ini menggunakan WideWorldImporters database sampel untuk SQL Server 2016 (13.x) dan versi yang lebih baru, Azure SQL Database, dan Azure SQL Managed Instance. WideWorldImporters dapat diunduh dari https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Lihat Pernyataan RESTORE untuk sintaks untuk memulihkan database sampel.

Contoh kondisi pengujian

Kecuali jika ditentukan sebaliknya, contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp . Direktori bernama D:\BCP digunakan dalam banyak contoh.

Skrip berikut membuat salinan WideWorldImporters.Warehouse.StockItemTransactions kosong tabel lalu menambahkan batasan kunci primer. Jalankan skrip T-SQL berikut di SQL Server Management Studio (SSMS)

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

Anda dapat memotong StockItemTransactions_bcp tabel sesuai kebutuhan:

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

J. Mengidentifikasi versi utilitas bcp

Pada prompt perintah, masukkan perintah berikut:

bcp -v

B. Menyalin baris tabel ke dalam file data (dengan koneksi tepercaya)

Contoh berikut mengilustrasikan out opsi pada WideWorldImporters.Warehouse.StockItemTransactions tabel.

  • Dasar

    Contoh ini membuat file data bernama StockItemTransactions_character.bcp dan menyalin data tabel ke dalamnya menggunakan format karakter .

    Pada prompt perintah, masukkan perintah berikut:

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • Diperluas

    Contoh ini membuat file data bernama StockItemTransactions_native.bcp dan menyalin data tabel ke dalamnya menggunakan format asli . Contohnya juga: menentukan jumlah maksimum kesalahan sintaksis, file kesalahan, dan file output.

    Pada prompt perintah, masukkan perintah berikut:

    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
    

Tinjau Error_out.log dan Output_out.log. Error_out.log harus kosong. Bandingkan ukuran file antara StockItemTransactions_character.bcp dan StockItemTransactions_native.bcp.

C. Menyalin baris tabel ke dalam file data (dengan autentikasi mode campuran)

Contoh berikut mengilustrasikan out opsi pada WideWorldImporters.Warehouse.StockItemTransactions tabel. Contoh ini membuat file data bernama StockItemTransactions_character.bcp dan menyalin data tabel ke dalamnya menggunakan format karakter .

Contoh mengasumsikan bahwa Anda menggunakan autentikasi mode campuran, dan Anda harus menggunakan sakelar -U untuk menentukan ID masuk Anda. Selain itu, kecuali Anda menyambungkan ke instans default SQL Server di komputer lokal, gunakan sakelar -S untuk menentukan nama sistem dan, secara opsional, nama instans.

Pada prompt perintah, masukkan perintah berikut: (Sistem meminta kata sandi Anda.)

bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D. Menyalin data dari file ke tabel

Contoh berikut mengilustrasikan in opsi pada WideWorldImporters.Warehouse.StockItemTransactions_bcp tabel menggunakan file yang dibuat sebelumnya.

  • Dasar

    Contoh ini menggunakan file data yang StockItemTransactions_character.bcp dibuat sebelumnya.

    Pada prompt perintah, masukkan perintah berikut:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • Diperluas

    Contoh ini menggunakan file data yang StockItemTransactions_native.bcp dibuat sebelumnya. Contohnya juga: gunakan petunjuk TABLOCK, menentukan ukuran batch, jumlah maksimum kesalahan sintaks, file kesalahan, dan file output.

    Pada prompt perintah, masukkan perintah berikut:

    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
    

    Tinjau Error_in.log dan Output_in.log.

E. Menyalin kolom tertentu ke dalam file data

Untuk menyalin kolom tertentu, Anda bisa menggunakan opsi .queryout Contoh berikut hanya StockItemTransactionID menyalin kolom Warehouse.StockItemTransactions tabel ke dalam file data.

Pada prompt perintah, masukkan perintah berikut:

bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\BCP\StockItemTransactionID_c.bcp -c -T

F. Menyalin baris tertentu ke dalam file data

Untuk menyalin baris tertentu, Anda bisa menggunakan opsi .queryout Contoh berikut hanya menyalin baris untuk orang Amy Trefl bernama dari WideWorldImporters.Application.People tabel ke dalam file Amy_Trefl_c.bcpdata .

Catatan

Sakelar -d digunakan untuk mengidentifikasi database.

Pada prompt perintah, masukkan perintah berikut:

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\BCP\Amy_Trefl_c.bcp -d WideWorldImporters -c -T

G. Menyalin data dari kueri ke file data

Untuk menyalin tataan hasil dari pernyataan Transact-SQL ke file data, gunakan queryout opsi . Contoh berikut menyalin nama dari WideWorldImporters.Application.People tabel, diurutkan berdasarkan nama lengkap, ke People.txt dalam file data.

Catatan

Sakelar -t digunakan untuk membuat file yang dibatasi koma.

Pada prompt perintah, masukkan perintah berikut:

bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\BCP\People.txt -t, -c -T

H. Membuat file format

Contoh berikut membuat tiga file format berbeda untuk Warehouse.StockItemTransactions tabel dalam WideWorldImporters database. Tinjau konten setiap file yang dibuat.

Pada prompt perintah, masukkan perintah berikut:

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

Catatan

Untuk menggunakan sakelar -x , Anda harus menggunakan klien bcp 9.0. Untuk informasi tentang cara menggunakan klien bcp 9.0, lihat "Komentar."

Untuk informasi selengkapnya, lihat Menggunakan file format Non-XML (SQL Server) dan File Format XML (SQL Server).

I. Menggunakan file format untuk mengimpor secara massal dengan bcp

Untuk menggunakan file format yang dibuat sebelumnya saat mengimpor data ke dalam instans SQL Server, gunakan sakelar -f dengan in opsi . Misalnya, perintah berikut menyalin secara massal konten file data, StockItemTransactions_character.bcp, ke dalam salinan Warehouse.StockItemTransactions_bcp tabel dengan menggunakan file format yang dibuat sebelumnya, StockItemTransactions_c.xml.

Catatan

Sakelar -L digunakan untuk mengimpor hanya 100 rekaman pertama.

Pada prompt perintah, masukkan perintah berikut:

bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\BCP\StockItemTransactions_character.bcp -L 100 -f D:\BCP\StockItemTransactions_c.xml -T

Catatan

File format berguna ketika bidang file data berbeda dari kolom tabel; misalnya, dalam jumlah, urutan, atau jenis datanya. Untuk informasi selengkapnya, lihat Memformat file untuk mengimpor atau mengekspor data (SQL Server).

j. Tentukan halaman kode

Contoh kode parsial berikut menunjukkan impor bcp saat menentukan halaman kode 65001:

bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...

K. Contoh file output menggunakan terminator bidang dan baris kustom

Contoh ini menunjukkan dua file sampel, yang dihasilkan oleh bcp menggunakan terminator bidang dan baris kustom.

  1. Buat tabel dbo.T1 di tempdb database, dengan dua kolom, ID dan Name.

    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. Buat file output dari tabel dbo.T1contoh , menggunakan terminator bidang kustom.

    Dalam contoh ini, nama server adalah MYSERVER, dan terminator bidang kustom ditentukan oleh -t ,.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
    

    Berikut set hasilnya.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Buat file output dari tabel dbo.T1contoh , menggunakan terminator bidang kustom dan terminator baris kustom.

    Dalam contoh ini, nama server adalah MYSERVER, terminator bidang kustom ditentukan oleh -t, ', dan terminator baris kustom ditentukan oleh -r :.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
    

    Berikut set hasilnya.

    1,Natalia:2,Mark:3,Randolph:
    

    Catatan

    Terminator baris selalu ditambahkan, bahkan ke rekaman terakhir. Namun, terminator bidang tidak ditambahkan ke bidang terakhir.

Contoh tambahan

Artikel berikut berisi contoh penggunaan bcp:

Pertimbangan dan batasan

  • Utilitas bcp memiliki batasan bahwa pesan kesalahan hanya menunjukkan 512 karakter byte. Hanya 512 byte pertama dari pesan kesalahan yang ditampilkan.

Dapatkan bantuan

Berkontribusi pada dokumentasi SQL

Tahukah Anda bahwa Anda dapat mengedit konten SQL sendiri? Jika Anda melakukannya, Anda tidak hanya membantu meningkatkan dokumentasi kami, tetapi Anda juga dikreditkan sebagai kontributor ke halaman.

Untuk informasi selengkapnya, lihat Cara berkontribusi pada dokumentasi SQL Server