Bagikan melalui


utilitas bcp

Utilitas bcp menyalin data secara massal antara instans Microsoft SQL Server dan file data dalam format yang ditentukan pengguna. 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 opsi kueri , 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.

tautan topikIkon untuk konvensi sintaksis yang digunakan untuk sintaks bcp, lihat Konvensi Sintaks Transact-SQL (Transact-SQL).

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.

Sintaks

  
   bcp [database_name.] schema.{table_name | view_name | "query" {indata_file | outdata_file | queryoutdata_file | format nul}  
  
[-apacket_size]  
[-bbatch_size]  
[-c]  
[-C { ACP | OEM | RAW | code_page } ]  
[-ddatabase_name]  
[-eerr_file]  
[-E]  
[-fformat_file]  
[-Ffirst_row]  
[-h"hint [,...n]"]   
[-iinput_file]  
[-k]  
[-Kapplication_intent]  
[-Llast_row]  
[-mmax_errors]  
[-n]  
[-N]  
[-ooutput_file]  
[-Ppassword]  
[-q]  
[-rrow_term]  
[-R]  
[-S [server_name[\instance_name]]  
[-tfield_term]  
[-T]  
[-Ulogin_id]  
[-v]  
[-V (80 | 90 | 100 | 110)]  
[-w]  
[-x]  
/?  

Argumen

data_file
Adalah jalur lengkap file data. Saat data diimpor secara massal ke SQL Server, file data berisi data yang akan disalin ke dalam tabel atau tampilan yang ditentukan. Saat 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 263 - 1 baris.

database_name
Adalah 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-.

didata_file | keluardata_file | kueridata_file | format nul
Menentukan arah salinan massal, sebagai berikut:

  • dalam salinan dari file ke dalam tabel atau tampilan database.

  • keluar salinan dari tabel database atau tampilan ke file. Jika Anda menentukan file yang ada, file akan ditimpa. Saat mengekstrak data, perhatikan bahwa utilitas bcp mewakili string kosong sebagai string null dan null sebagai string kosong.

  • salinan kueri 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 tabel atau pemisah 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 opsi -f ; membuat file format XML, juga memerlukan opsi -x . Untuk informasi selengkapnya, lihat Membuat File Format (SQL Server). Anda harus menentukan nul sebagai nilai (format nul).

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

"kueri"
Adalah kueri Transact-SQL yang mengembalikan tataan hasil. Jika kueri mengembalikan beberapa tataan hasil, hanya kumpulan hasil pertama yang disalin ke file data; tataan hasil berikutnya diabaikan. Gunakan tanda kutip ganda di sekitar kueri dan tanda kutip tunggal di sekitar apa pun yang disematkan dalam kueri. kueri 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 durasi 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.

nama tabel
Adalah nama tabel tujuan saat mengimpor data ke SQL Server (dalam), dan tabel sumber saat mengekspor data dari SQL Server (keluar).

view_name
Adalah nama tampilan tujuan saat menyalin data ke SQL Server (dalam), dan tampilan sumber saat menyalin data dari SQL Server (keluar). 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 (Transact-SQL).

-apacket_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 sistem sp_configure). Namun, opsi konfigurasi server dapat ditimpa secara individual dengan menggunakan opsi ini. packet_size bisa dari 4096 hingga 65535 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.

-bbatch_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 bersama dengan opsi **-h"**ROWS_PER_BATCH =bb" .

-c
Melakukan operasi menggunakan jenis data karakter. Opsi ini tidak meminta setiap bidang; ini menggunakan char 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 charkolom , , varcharatau text dengan nilai karakter lebih besar dari 127 atau kurang dari 32.

Catatan

Sebaiknya tentukan nama kolab untuk setiap kolom dalam file format.

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.

** Penting ** SQL Server tidak mendukung halaman kode 65001 (pengodean UTF-8).

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

-eerr_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.

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. Untuk informasi selengkapnya, lihat DBCC CHECKIDENT (Transact-SQL).

Opsi -E memiliki persyaratan izin khusus. Untuk informasi selengkapnya, lihat "Keterangan" nanti dalam topik ini.

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

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

  • Jika digunakan dengan opsi masuk atau keluar , -f memerlukan file format yang ada.

    Catatan

    Menggunakan file format di dengan opsi masuk atau keluar bersifat opsional. Dengan tidak adanya opsi -f , jika -n, -c, , -watau -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 .

-Ffirst_row
Menentukan jumlah baris pertama yang akan diekspor dari tabel atau impor 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 bisa berupa bilangan bulat positif dengan nilai hingga 2^63-1. - Ffirst_row berbasis 1.

-h"petunjuk[ ,... n] "
Menentukan petunjuk atau petunjuk yang akan digunakan selama impor data secara massal ke dalam tabel atau tampilan.

ORDER**(column[ASC | DESC] [,... n]) **
Urutan pengurutan data dalam file data. Performa impor massal ditingkatkan jika data yang diimpor diurutkan sesuai dengan indeks berkluster pada tabel, jika ada. Jika file data diurutkan dalam urutan yang berbeda, itu 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 ketika -b tidak ditentukan, sehingga 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 pemuatan massal; jika tidak, kunci tingkat baris diperoleh. Petunjuk ini secara signifikan meningkatkan performa karena menahan kunci selama durasi operasi penyalinan massal mengurangi ketidakcocokan kunci pada tabel. Tabel dapat dimuat secara bersamaan oleh beberapa klien jika tabel tidak memiliki indeks dan TABLOCK ditentukan. Secara default, perilaku penguncian ditentukan oleh kunci tabel opsi tabel pada beban massal.

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.

Catatan

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

Pada titik tertentu, Anda harus 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 inkremental. Oleh karena itu, kami menyarankan agar Anda biasanya mengaktifkan pemeriksaan batasan selama impor massal bertahas.

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 -mmax_errors tidak berlaku untuk pemeriksaan batasan.

FIRE_TRIGGERS
Ditentukan dengan dalam argumen , setiap pemicu sisipan yang ditentukan pada tabel tujuan akan berjalan selama operasi penyalinan massal. Jika FIRE_TRIGGERS tidak ditentukan, tidak ada pemicu sisipan yang akan berjalan. FIRE_TRIGGERS diabaikan untuk argumen keluar, kueri, dan format .

-iinput_file
Menentukan nama file respons, yang berisi respons terhadap pertanyaan prompt perintah untuk setiap bidang data saat salinan massal sedang 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 Null atau Menggunakan Nilai Default Selama Impor Massal (SQL Server).

-Kapplication_intent
Menyatakan jenis beban kerja aplikasi saat menyambungkan ke server. Satu-satunya nilai yang dimungkinkan adalah ReadOnly. Jika -K tidak ditentukan, utilitas bcp tidak akan mendukung konektivitas ke replika sekunder dalam grup ketersediaan AlwaysOn. Untuk informasi selengkapnya, lihat Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn).

- Llast_row
Menentukan jumlah baris terakhir yang akan diekspor dari tabel atau impor 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 bisa berupa bilangan bulat positif dengan nilai hingga 2^63-1.

-mmax_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 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 -m juga tidak berlaku untuk mengonversi money jenis data 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 salin 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.exe dengan -N, Anda mungkin melihat peringatan pemotongan jika ada kolom karakter non-Unicode panjang tetap (misalnya, char(10)).

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

-ooutput_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 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 opsi -P bersama dengan opsi -U . Sebagai gantinya, setelah menentukan bcp bersama dengan opsi -U dan sakelar lainnya (jangan tentukan -P), tekan ENTER, dan perintah akan meminta kata sandi. Metode ini memastikan bahwa kata sandi Anda akan ditutupi 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_IDENTIFIERS 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 Keterangan, nanti dalam topik ini.

-rrow_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.exe, nilai akan dipotong pada 0x00. Misalnya, jika Anda menentukan 0x410041, 0x41 akan 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 dalam SQL Server menggunakan format regional yang ditentukan untuk pengaturan lokal komputer klien. Secara default, pengaturan regional diabaikan.

-Sserver_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*\*.

-tfield_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.exe, nilai akan dipotong pada 0x00. Misalnya, jika Anda menentukan 0x410041, 0x41 akan 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 agar berhasil masuk.

-Ulogin_id
Menentukan ID masuk yang digunakan untuk menyambungkan ke SQL Server.

Penting

Ketika utilitas bcp tersambung ke SQL Server dengan koneksi tepercaya menggunakan keamanan terintegrasi, gunakan opsi -T (koneksi tepercaya) alih-alih kombinasi nama pengguna dan kata sandi.

-v
Melaporkan nomor versi utilitas bcp dan hak cipta.

-V (80 | 90 | 100| 110)
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

90 = SQL Server 2005

100 = SQL Server 2008 dan SQL Server 2008 R2

110 = SQL Server 2012

Misalnya, untuk menghasilkan data untuk jenis yang tidak didukung oleh SQL Server 2000, tetapi diperkenalkan dalam versi SQL Server yang lebih baru, gunakan opsi -V80.

Untuk informasi selengkapnya, lihat Mengimpor Data Format Asli dan Karakter dari Versi SQL Server Sebelumnya.

-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
Digunakan dengan format dan opsi -fformat_file , 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 format dan -fformat_file.

Keterangan

Klien bcp 12.0 diinstal saat Anda menginstal alat MicrosoftSQL Server 2014. Jika alat diinstal untuk SQL Server 2014 dan versi SQL Server yang lebih lama, tergantung pada nilai variabel lingkungan PATH, Anda mungkin menggunakan klien bcp sebelumnya alih-alih klien bcp 12.0. Variabel lingkungan ini menentukan kumpulan direktori yang digunakan oleh Windows untuk mencari file yang dapat dieksekusi. Untuk menemukan versi mana yang Anda gunakan, jalankan perintah bcp /v di Prompt Perintah Windows. Untuk informasi tentang cara mengatur jalur perintah dalam variabel lingkungan PATH, lihat Bantuan Windows.

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 Referensi Utilitas Prompt Perintah (Mesin Database).

Untuk informasi tentang menyiapkan data untuk operasi impor atau ekspor massal, lihat Menyiapkan Data untuk Ekspor atau Impor Massal (SQL Server).

Untuk informasi tentang kapan operasi penyisipan baris yang dilakukan oleh impor massal dicatat dalam log transaksi, lihat Prasyarat untuk Pengelogan Minimal dalam Impor Massal.

Dukungan File Data Asli

Pada SQL Server 2014, utilitas bcp mendukung file data asli yang kompatibel dengan SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, dan SQL Server 2012.

Kolom Komputasi dan Kolom tanda waktu

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

Komputasi dan timestamp kolom disalin secara massal dari SQL Server ke file data seperti biasa.

Menentukan Pengidentifikasi yang Berisi Spasi atau Tanda Kutip

SQL Server pengidentifikasi 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 AdventureWorks2012.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 atau floatreal jenis data valid.

  • Data Unicode memiliki panjang byte genap.

Formulir data yang tidak valid yang dapat diimpor secara massal di versi SQL Server sebelumnya mungkin 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 dimuat secara 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

Operasi bcpout memerlukan izin SELECT pada tabel sumber.

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

  • Batasan ada dan petunjuk CHECK_CONSTRAINTS tidak ditentukan.

    Catatan

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

  • Pemicu ada dan petunjuk FIRE_TRIGGER tidak ditentukan.

    Catatan

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

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

Catatan

Memerlukan izin ALTER TABLE pada tabel target baru di SQL Server 2005. 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 opsi -c atau -w jika data akan diimpor ke database yang tidak SQL Server.

  • (Administrator) Verifikasi data saat menggunakan BCP OUT. Misalnya, ketika 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. Harap pertimbangkan untuk mengganti terminator default (menggunakan opsi -t dan -r) 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 opsi -t dan -r.

Contoh

Bagian ini berisi contoh-contoh berikut:

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

  • B. Menyalin baris tabel ke dalam file data (dengan Autentikasi Mode campuran)

  • C. Menyalin data dari file ke tabel

  • D. Menyalin kolom tertentu ke dalam file data

  • E. Menyalin baris tertentu ke dalam file data

  • F. Menyalin data dari kueri ke file data

  • G. Membuat file format non-XML

  • H. Membuat file format XML

  • i. Menggunakan file format untuk mengimpor secara massal dengan bcp

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

Contoh berikut mengilustrasikan opsi keluar pada AdventureWorks2012.Sales.Currency tabel. Contoh ini membuat file data bernama Currency.dat dan menyalin data tabel ke dalamnya menggunakan format karakter. Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah, masukkan perintah berikut:

bcp AdventureWorks2012.Sales.Currency out Currency.dat -T -c  

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

Contoh berikut mengilustrasikan opsi keluar pada AdventureWorks2012.Sales.Currency tabel. Contoh ini membuat file data bernama Currency.dat dan menyalin data tabel ke dalamnya menggunakan format karakter.

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

bcp AdventureWorks2012.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>  

Sistem akan meminta kata sandi Anda.

C. Menyalin data dari file ke tabel

Contoh berikut mengilustrasikan opsi dalam dengan menggunakan file yang dibuat dalam contoh sebelumnya (Currency.dat). Namun, pertama, contoh ini membuat salinan AdventureWorks2012 Sales.Currency kosong tabel, Sales.Currency2, tempat data disalin. Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Untuk membuat tabel kosong, di Editor Kueri, masukkan perintah berikut:

USE AdventureWorks2012;  
GO  
SELECT * INTO AdventureWorks2012.Sales.Currency2   
FROM AdventureWorks2012.Sales.Currency WHERE 1=2;  

Untuk menyalin data karakter secara massal ke dalam tabel baru, yaitu mengimpor data, masukkan perintah berikut ini pada prompt perintah:

bcp AdventureWorks2012.Sales.Currency2 in Currency.dat -T -c  

Untuk memverifikasi bahwa perintah berhasil, tampilkan konten tabel dalam Editor Kueri, dan masukkan:

USE AdventureWorks2012;  
GO  
SELECT * FROM Sales.Currency2  

D. Menyalin kolom tertentu ke dalam file data

Untuk menyalin kolom tertentu, Anda bisa menggunakan opsi kueri. Contoh berikut hanya Name menyalin kolom Sales.Currency tabel ke dalam file data. Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c  

E. Menyalin baris tertentu ke dalam file data

Untuk menyalin baris tertentu, Anda bisa menggunakan opsi kueri . Contoh berikut hanya menyalin baris untuk kontak bernama Jarrod Rana dari AdventureWorks2012.Person.Person tabel ke dalam file data (Jarrod Rana.dat). Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp "SELECT * FROM AdventureWorks2012.Person.Person WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c  

F. Menyalin data dari kueri ke file data

Untuk menyalin kumpulan hasil dari pernyataan Transact-SQL ke file data, gunakan opsi kueri . Contoh berikut menyalin nama dari AdventureWorks2012.Person.Person tabel, diurutkan berdasarkan nama belakang lalu nama depan, ke Contacts.txt dalam file data. Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp "SELECT FirstName, LastName FROM AdventureWorks2012.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T  

G. Membuat file format non-XML

Contoh berikut membuat file format non-XML, Currency.fmt, untuk Sales.Currency tabel dalam database AdventureWorks2012 . Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp AdventureWorks2012.Sales.Currency format nul -T -c  -f Currency.fmt  

Untuk informasi selengkapnya, lihat File Format Non-XML (SQL Server).

H. Membuat file format XML

Contoh berikut membuat file format XML bernama Currency.xml untuk Sales.Currency tabel dalam database AdventureWorks2012 . Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp AdventureWorks2012.Sales.Currency format nul -T -c -x -f Currency.xml  

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 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 tombol -f dengan opsi masuk. Misalnya, perintah berikut menyalin konten file data secara massal, Currency.dat, ke dalam salinan Sales.Currency tabel (Sales.Currency2) dengan menggunakan file format yang dibuat sebelumnya (Currency.xml). Contoh mengasumsikan bahwa Anda menggunakan Autentikasi Windows dan memiliki koneksi tepercaya ke instans server tempat Anda menjalankan perintah bcp .

Pada prompt perintah Windows, masukkan:

bcp AdventureWorks2012.Sales.Currency2 in Currency.dat -T -f Currency.xml  

Catatan

File format berguna ketika bidang file data berbeda dari kolom tabel; misalnya, dalam jumlah, pemesanan, atau jenis datanya. Untuk informasi selengkapnya, lihat Format File untuk Mengimpor atau Mengekspor Data (SQL Server).

Contoh tambahan

Topik berikut berisi contoh penggunaan bcp:

Lihat juga

Menyiapkan Data untuk Ekspor atau Impor Massal (SQL Server)
SISIPAN MASSAL (Transact-SQL)
OPENROWSET (Transact-SQL)
SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Format File untuk Mengimpor atau Mengekspor Data (SQL Server)