Bagikan melalui


utilitas bcp

Berlaku untuk:SQL ServerAzure SQL DatabaseInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

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

Gunakan utilitas bcp 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.

Untuk informasi selengkapnya tentang versi bcp mana yang diinstal pada sistem Anda, persyaratan sistem, dan cara mendapatkan bcp, lihat Mengunduh dan menginstal utilitas bcp.

Note

File data bcp tidak menyertakan informasi skema atau format apa pun. Jika Anda menggunakan bcp untuk mencadangkan data, dan kemudian menghilangkan atau mengubah tabel sumber, Anda memerlukan definisi tabel yang identik atau file format untuk mengimpor data kembali.

Untuk konvensi sintaksis yang digunakan untuk sintaks bcp , lihat konvensi sintaksTransact-SQL (Transact-SQL).

Cara menggunakan bcp

Untuk informasi tentang cara menggunakan bcp, termasuk contoh perintah, lihat Cara menggunakan utilitas bcp.

Menggunakan bcp di Linux dan macOS

Untuk informasi tentang cara menginstal alat baris perintah di macOS dan Linux, lihat Menginstal alat baris perintah SQL Server sqlcmd dan bcp di Linux.

Pertimbangan untuk bcp di Linux dan macOS

  • Pemisah kolom adalah tab (\t).

  • Pemutus baris adalah karakter baris baru (\n).

  • Untuk transfer SQL Server ke SQL Server, gunakan format asli (-n). Gunakan format karakter (-c) hanya ketika data menyeberang ke sistem non-SQL Server atau ketika file data tidak boleh berisi karakter yang diperluas. Untuk informasi selengkapnya, lihat Mode karakter dan praktik terbaik mode bawaan.

  • Anda harus menambahkan tanda kutip atau meloloskan backslash (\) pada argumen baris perintah. Misalnya, untuk menentukan baris baru sebagai terminator baris kustom, gunakan salah satu mekanisme berikut:

    • -r\\n
    • -r"\n"
    • -r'\n'

Dukungan TDS 8.0

SQL Server 2025 (17.x) memperkenalkan dukungan TDS 8.0 untuk utilitas bcp .

Syntax

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 Microsoft Entra 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 ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

Opsi baris perintah

Tabel berikut mencantumkan opsi baris perintah yang tersedia di bcp, dan sistem operasi mana yang mereka dukung.

Pilihan baris perintah Didukung pada Windows Didukung di Linux dan macOS
Mode objek dan transfer
[database_name.]skema.{table_name | view_name | "query"} Yes Yes
{indata_file | outdata_file | queryoutdata_file | format nul} Yes Yes
-q Yes Yes
Koneksi dan autentikasi
-S [server_name[\instance_name]] Yes Yes
-d database_name Yes Yes
-U login_id Yes Yes
-P kata sandi Yes Yes
-G Autentikasi Microsoft Entra Yes Yes
-D Yes Yes
-K application_intent Yes Yes
-l login_timeout Yes Yes
-T Yes Yes
-Y[s| m| o] Ya 1 Ya 1
Representasi data
-c Yes Yes
-C { ACP | OEM | RAW | code_page } Yes No
-n Yes Yes
-N Yes No
-w Yes Yes
-z No Ya 2
Format file
-f format_file Yes Yes
-x Yes No
Batching dan performa
-a packet_size Yes Yes
-b batch_size Yes Yes
-h"petunjuk [,... n]" Yes No
-m max_errors Yes Yes
-F first_row Yes Yes
-L last_row Yes Yes
-r row_term Yes Yes
-t field_term Yes Yes
Penanganan nilai
-k Yes Yes
-E Yes Yes
I/O file dan pencatatan log
-i input_file Yes No
-o output_file Yes No
-e err_file Yes Yes
Kompatibilitas dan penerapan versi
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Yes No
-u Ya 1 Ya 1
Opsi lain-lain
-R Yes Yes
-v Yes Yes

1 Memerlukan bcp versi 18 atau yang lebih baru, yang dikirim dengan SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 dan versi yang lebih baru.

Mode objek dan transfer

database_name

Nama database yang berisi tabel atau tampilan yang ditentukan. Jika Anda tidak menentukan parameter ini, database default untuk pengguna akan digunakan.

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

schema

Nama pemilik tabel atau tampilan. skema bersifat opsional jika pengguna yang melakukan operasi memiliki tabel atau tampilan yang ditentukan. Jika Anda tidak menentukan skema, 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). Saat digunakan sebagai tujuan (in), tampilan hanya didukung jika semua kolomnya merujuk ke tabel yang sama. Pembatasan ini tidak berlaku saat tampilan digunakan sebagai sumber (out). Untuk informasi selengkapnya tentang pembatasan untuk menyalin data ke dalam tampilan, lihat INSERT.

"query"

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. Anda juga harus menentukan queryout kapan 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.

di / dalam

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

out

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

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

data_file

Jalur lengkap file data. Saat Anda mengimpor data secara massal ke SQL Server, file data berisi data untuk disalin ke dalam tabel atau tampilan yang ditentukan. Saat Anda mengekspor data 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.

queryout

Menyalin data dari kueri dan harus ditentukan hanya saat penyalinan data dalam jumlah besar 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 memerlukan -f opsi ; membuat file format XML juga memerlukan -x opsi . Untuk informasi selengkapnya, lihat Membuat file format dengan bcp (SQL Server). Anda harus menentukan nul sebagai nilai (format nul).

-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 spasi atau tanda kutip tunggal, Anda harus menggunakan opsi -q.

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

Untuk informasi selengkapnya, lihat bagian Catatan di artikel ini.

Koneksi dan autentikasi

-S [server_name[\instance_name]]

Menentukan nama instans SQL Server untuk disambungkan, atau jika Anda menggunakan -D, DSN.

Jika Anda tidak menentukan server, utilitas bcp tersambung ke instans default SQL Server di komputer lokal. Anda memerlukan opsi ini saat menjalankan perintah bcp 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 <server_name>\<instance_name>.

-d database_name

Menentukan database yang akan disambungkan. Secara default, bcp tersambung ke database default Anda. Jika Anda menentukan -d <database_name> dan nama tiga bagian (database_name.schema.table, diteruskan sebagai parameter pertama ke bcp), 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.

-U login_id

Menentukan ID masuk yang digunakan untuk menyambungkan ke SQL Server.

-P kata sandi

Menentukan kata sandi untuk ID masuk. Jika Anda tidak menggunakan opsi ini, perintah bcp akan meminta kata sandi. Jika Anda menggunakan opsi ini 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 menyembunyikan kata sandi Anda, jangan tentukan opsi -P bersama dengan opsi -U. Sebagai gantinya, setelah menentukan bcp bersama dengan -U opsi dan sakelar lainnya (jangan tentukan -P), tekan tombol 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 .

Di Linux dan macOS, saat digunakan dengan -G opsi tanpa -U, -P menentukan file yang berisi token akses Microsoft Entra (v17.8 dan versi yang lebih baru). File token harus dalam format UTF-16LE (tanpa BOM). Untuk informasi selengkapnya, lihat Mengautentikasi dengan ID Microsoft Entra di bcp.

-G

Berlaku untuk: Azure SQL Database, Azure SQL Managed Instance, database SQL di Microsoft Fabric, Azure Synapse Analytics, dan SQL Server 2022 (16.x) dan versi yang lebih baru.

Pengalih ini digunakan oleh klien untuk menentukan bahwa seorang pengguna diautentikasi dengan ID Microsoft Entra. Sakelar -G memerlukan versi bcp 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 atau Autentikasi dalam database SQL di Microsoft Fabric.

Untuk detail selengkapnya tentang autentikasi Microsoft Entra di bcp, lihat Mengautentikasi dengan ID Microsoft Entra di bcp.

-D

Menyebabkan nilai yang diteruskan ke bcp -S opsi ditafsirkan sebagai nama sumber data (DSN). -D dapat muncul di mana saja di baris perintah; urutan relatif terhadap -S tidak masalah.

DSN dapat digunakan untuk:

  • Sematkan opsi driver untuk menyederhanakan baris perintah.
  • Terapkan opsi driver yang tidak dapat diakses dari baris perintah, seperti MultiSubnetFailover.
  • Bantu lindungi kredensial sensitif agar tidak dapat ditemukan sebagai argumen baris perintah.

Untuk informasi selengkapnya, lihat Dukungan DSN di sqlcmd dan bcp.

-K tujuan_aplikasi

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

-l 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 Anda berikan bukan numerik atau tidak termasuk dalam rentang tersebut, bcp akan menghasilkan pesan kesalahan. Nilai 0 menentukan batas waktu tak terbatas.

-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 Anda tidak menentukan -T, Anda perlu menentukan -U dan -P untuk berhasil terhubung.

Penting

Gunakan -T hanya saat menyambungkan ke SQL Server dengan koneksi tepercaya terintegrasi Windows. Saat menyambungkan ke Azure SQL Database atau Azure Synapse Analytics, -T (autentikasi terintegrasi Windows) tidak didukung. Untuk autentikasi Microsoft Entra terhadap layanan Azure atau SQL Server 2022 (16.x) dan versi yang lebih baru, gunakan -G (lihat Mengautentikasi dengan ID Microsoft Entra di bcp).

-Y[s|m|o]

Berlaku untuk: bcp versi 18 dan versi yang lebih baru, yang dikirim dengan SQL Server 2025 (17.x).

Menentukan apakah koneksi menggunakan enkripsi TLS melalui jaringan. -Y dapat berupa o (untuk Optional), m (untuk Mandatory, default), atau s (untuk Strict). Jika Anda tidak menyertakan -Y, maka -Ym (untuk Mandatory) adalah default.

-u

Berlaku untuk: bcp versi 18 dan versi yang lebih baru, yang dikirim dengan SQL Server 2025 (17.x).

Percayai sertifikat server. Saat digunakan dengan opsi enkripsi untuk koneksi, mengaktifkan enkripsi menggunakan sertifikat server yang ditandatangani sendiri.

Representasi data

-c

Melakukan operasi menggunakan jenis data karakter. Opsi ini tidak meminta konfirmasi untuk setiap isian. Ini menggunakan char sebagai jenis penyimpanan, tanpa awalan, dan menggunakan \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).

Untuk praktik terbaik, lihat Praktik terbaik mode karakter dan mode bawaan.

-C { ACP | OEM | RAW | code_page }

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

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.

Tentukan nama pengurutan untuk setiap kolom dalam file format, kecuali jika Anda ingin opsi 65001 memiliki prioritas atas spesifikasi pengurutan atau halaman kode.

Nilai halaman kode Description
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Halaman kode default yang digunakan oleh klien. Halaman kode ini adalah default jika Anda tidak menentukan -C.
RAW Tidak ada konversi dari satu halaman kode ke halaman lain yang terjadi. Opsi ini adalah yang tercepat karena tidak ada konversi yang terjadi.
<code_page> Nomor halaman kode tertentu, seperti 850.

Versi sebelum 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.

-n

Melakukan operasi penyalinan massal menggunakan tipe data asli dari basis data. Opsi ini tidak mengharuskan input untuk setiap bidang. Ini menggunakan nilai bawaan.

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

Untuk praktik terbaik, lihat Mode karakter dan praktik terbaik mode asli.

-N

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

Melakukan operasi penyalinan massal menggunakan jenis data asli dari database untuk data nonkarakter, dan karakter Unicode untuk jenis 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. Tidak ada permintaan untuk setiap bidang. Gunakan opsi ini saat Anda mentransfer data yang berisi karakter ANSI yang diperluas dan Anda ingin mengoptimalkan 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, Anda mungkin melihat peringatan pemangkasan jika ada kolom karakter non-Unicode panjang tetap (misalnya, -N).

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

-w

Melakukan operasi penyalinan massal dengan menggunakan karakter Unicode. Opsi ini tidak memunculkan prompt untuk 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).

-z

Berlaku untuk: hanya bcp (ODBC), Linux, dan macOS. Windows tidak didukung.

Mengaktifkan dukungan jenis data vektor di utilitas bcp . Fitur ini saat ini dinonaktifkan secara default. Saat dinonaktifkan, data vektor diimpor atau diekspor sebagai string array float JSON. Ketika diaktifkan, dan saat menyambungkan ke SQL Server 2025 (17.x) dan versi yang lebih baru, data vektor diimpor atau diekspor dalam biner vektor asli.

Format file

-f format_file

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

  • Jika Anda menggunakan -f dengan opsi format, format_file yang ditentukan dibuat untuk tabel atau view yang ditentukan. Untuk membuat file format XML, serta tentukan opsi -x. Untuk informasi selengkapnya, lihat Membuat file format dengan bcp (SQL Server).

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

    Note

    Menggunakan file format dengan opsi in atau out bersifat opsional. Jika Anda tidak menentukan -f opsi dan tidak menentukan -n, , -c, -watau -N, perintah meminta informasi format dan memungkinkan Anda menyimpan respons dalam file format. Nama file default adalah bcp.fmt.

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

-x

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

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

Pengelompokan dan Kinerja

-a packet_size

Menentukan jumlah byte per paket jaringan yang dikirim dan diterima klien dari server. Atur opsi konfigurasi server ini dengan menggunakan SQL Server Management Studio atau prosedur tersimpan sistem sp_configure. Namun, Anda dapat mengambil alih opsi konfigurasi server secara individual dengan menggunakan opsi ini. packet_size bisa dari 4.096 byte hingga 65.535 byte. Defaultnya adalah 4096.

Meningkatkan ukuran paket dapat meningkatkan performa operasi penyalinan massal. Jika Anda meminta paket yang lebih besar tetapi server tidak dapat memberikannya, defaultnya digunakan. Statistik performa yang dihasilkan utilitas bcp menunjukkan ukuran paket yang digunakan.

-b batch_size

Menentukan jumlah baris per setiap batch data yang diimpor. Setiap batch diimpor dan dicatat menjadi transaksi terpisah yang mengimpor seluruh batch sebelum dikonfirmasi. Secara default, bcp mengimpor semua baris dalam file data 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 telah dilakukan tidak terpengaruh oleh kegagalan berikutnya.

Petunjuk -b dan petunjuk -h "ROWS_PER_BATCH=<bb>" saling eksklusif. Gunakan -b saat Anda ingin bcp mengontrol batching secara eksplisit, atau gunakan ROWS_PER_BATCH untuk mengisyaratkan pengoptimal server saat mengirim data sebagai satu transaksi.

-h "petunjuk (hints) [, ... n]"

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

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 meningkat 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 Anda berikan 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 (dengan nama bb). Digunakan saat Anda tidak menentukan -b, yang 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 (dalam cc). Secara default, KILOBYTES_PER_BATCH tidak diketahui.

  • TABLOCK

    Menentukan bahwa kunci tingkat tabel pembaruan massal diperoleh selama operasi beban massal; jika tidak, kunci tingkat baris diperoleh. Petunjuk ini secara signifikan meningkatkan performa karena memegang kunci selama operasi salin massal mengurangi persaingan kunci pada tabel. Anda dapat memuat tabel secara bersamaan dari beberapa klien jika tabel tidak memiliki indeks dan TABLOCK ditentukan. Secara bawaan, opsi tabel table lock on bulkload menentukan perilaku penguncian. Untuk informasi selengkapnya, lihat sp_tableoption.

    Note

    Jika tabel target adalah indeks penyimpan kolom berkluster, hint TABLOCK tidak diperlukan untuk dimuat oleh beberapa klien bersamaan karena setiap utas bersamaan diberikan grup baris terpisah dalam indeks dan memuat data ke dalamnya. Untuk informasi selengkapnya, lihat Indeks penyimpan kolom: gambaran umum.

  • 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 apa pun diabaikan, dan setelah operasi batasan pada tabel ditandai sebagai tidak tepercaya.

    Note

    batasan UNIQUE, PRIMARY KEY, dan NOT NULL selalu diberlakukan.

    Pada titik tertentu, Anda perlu memeriksa batasan pada seluruh tabel. Jika tabel tidak kosong sebelum operasi impor massal, biaya untuk memvalidasi ulang batasan dapat melebihi biaya penerapan batasan CHECK ke data tambahan. Oleh karena itu, Anda biasanya dapat 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 menonaktifkan CHECK batasan, Anda dapat mengimpor data lalu menggunakan pernyataan Transact-SQL untuk menghapus data yang tidak valid.

    Note

    Sakelar -mmax_errors tidak berlaku untuk pemeriksaan batasan.

  • FIRE_TRIGGERS

    Saat Anda menentukan opsi ini dengan dalam argumen, pemicu penyisipan apa pun yang ditentukan pada tabel tujuan dijalankan selama operasi salin massal. Jika Anda tidak menentukan FIRE_TRIGGERS, tidak ada pemicu insert yang dijalankan. FIRE_TRIGGERS diabaikan untuk argumen out, queryout, dan format.

-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 server, seperti pelanggaran batasan.

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

Note

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

-F baris_pertama

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 jumlah total baris. Jika Anda tidak menentukan parameter ini, defaultnya adalah baris pertama file.

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

-L baris_terakhir

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. Jika Anda tidak menentukan parameter ini, defaultnya adalah baris terakhir file.

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

-r row_term

Menentukan terminator baris. Standarnya adalah \n (karakter baris baru). Gunakan parameter ini untuk menggantikan 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 .

-t field_term

Menentukan pemisah bidang. Defaultnya adalah \t (karakter tab). Gunakan parameter ini untuk menggantikan pemisah bidang default. Untuk informasi selengkapnya, lihat Menentukan terminator bidang dan baris (SQL Server).

Jika Anda menentukan terminator bidang dalam notasi heksadesimal dalam perintah bcp, nilainya dipangkas 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 .

Penanganan nilai

-k

Menentukan bahwa kolom kosong menyimpan nilai null selama operasi, daripada menyisipkan nilai default apa pun untuk kolom. Untuk informasi selengkapnya, lihat Menyimpan nilai null atau default selama impor massal (SQL Server).

-E

Menentukan bahwa operasi menggunakan nilai identitas dalam file data yang diimpor untuk kolom identitas. Jika Anda tidak menentukan -E, SQL Server mengabaikan nilai identitas untuk kolom ini dalam file data yang diimpor dan 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.

I/O file dan pengelogan

-i input_file

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

Menentukan nama file respons. File ini berisi respons terhadap pertanyaan pada prompt perintah untuk setiap bidang data saat Anda melakukan operasi penyalinan massal menggunakan mode interaktif (-n, -c, -w, atau -N tidak ditentukan).

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

-o output_file

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

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 .

-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 Anda tidak menggunakan opsi ini, file kesalahan tidak dibuat.

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

Kompatibilitas dan penerapan versi

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

Berlaku untuk: Hanya Windows. Tidak didukung di Linux dan macOS.

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)
  • 170 = SQL Server 2025 (17.x)

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

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

Opsi lain-lain

-R

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

-v

Melaporkan nomor versi utilitas bcp dan hak cipta.

Komentar

  • Utilitas bcp mendukung file data asli yang kompatibel dengan semua versi SQL Server yang didukung.

  • Utilitas bcp hanya menampilkan 512 byte pertama dari pesan kesalahan.

Permissions

Operasi bcp out memerlukan izin SELECT pada tabel sumber.

Operasi bcp in memerlukan minimal izin SELECT serta 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.

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

  • Pemicu sudah ada dan petunjuk FIRE_TRIGGERS tidak ditentukan.

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

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

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 Mengedit dokumentasi Microsoft Learn.