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
- Unduh ODBC Driver untuk SQL Server
- Unduh Utilitas Baris Perintah Microsoft 15 untuk SQL Server (x64)
- Unduh Utilitas Baris Perintah Microsoft 15 untuk SQL Server (x86)
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
, -w
atau -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 denganformat
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 atauout
,-f
memerlukan file format yang ada.Catatan
Menggunakan file format dengan
in
opsi atauout
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 adalahbcp.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 databasetestdb
dari serveraadserver.database.windows.net
Azure dan menyimpan data dalam filec:\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 tabelbcptest
untuk databasetestdb
di serveraadserver.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 databasetestdb
di serveraadserver.database.windows.net
logis dan menyimpan data dalam filec:\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 databasetestdb
di serveraadserver.database.windows.net
logis, 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:
- Tekan tombol Windows pada keyboard Anda
- Ketik
ODBC
dan pilih versi Administrator Sumber Data ODBC yang sesuai - Pilih tab DSN Pengguna atau DSN Sistem
- Pilih Tambahkan dan ikuti perintah
- Saat dimintai jenis autentikasi, pilih Autentikasi Identitas Layanan Terkelola Azure
- Jika Anda memiliki Identitas Terkelola yang Ditetapkan Pengguna, tempel identitas
Object (principal) ID
ke dalam kotak ID Masuk di bagian bawah tab autentikasi - 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
parameterConnect-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
out
argumen , ,queryout
danformat
.
-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
, , -w
atau -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 bernamaCurrency 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, atauSertakan 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 petunjukTABLOCK
, 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
danOutput_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.bcp
data .
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.
Buat tabel
dbo.T1
ditempdb
database, dengan dua kolom,ID
danName
.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
Buat file output dari tabel
dbo.T1
contoh , 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
Buat file output dari tabel
dbo.T1
contoh , 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:
Format Data untuk Impor Massal atau Ekspor Massal (SQL Server)
- Menggunakan format asli untuk mengimpor atau mengekspor data (SQL Server)
- Menggunakan format karakter untuk mengimpor atau mengekspor data (SQL Server)
- Menggunakan Format Asli Unicode untuk Mengimpor atau Mengekspor Data (SQL Server)
- Gunakan format karakter unicode untuk mengimpor atau mengekspor data (SQL Server)
Menyimpan nilai null atau default selama impor massal (SQL Server)
Pertahankan nilai identitas saat mengimpor data secara massal (SQL Server)
Format File untuk Mengimpor atau Mengekspor Data (SQL Server)
- Membuat File Format (SQL Server)
- Menggunakan file format untuk mengimpor data secara massal (SQL Server)
- Menggunakan File Format untuk Melewati Kolom Tabel (SQL Server)
- Menggunakan file format untuk melewati bidang data (SQL Server)
- Menggunakan file format untuk memetakan kolom tabel ke bidang file data (SQL Server)
Pertimbangan dan batasan
- Utilitas bcp memiliki batasan bahwa pesan kesalahan hanya menunjukkan 512 karakter byte. Hanya 512 byte pertama dari pesan kesalahan yang ditampilkan.
Konten terkait
- Menyiapkan data untuk ekspor atau impor massal
- SISIPAN MASSAL (Transact-SQL)
- OPENROWSET (T-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (T-SQL)
- sp_tableoption (T-SQL)
- Memformat file untuk mengimpor atau mengekspor data (SQL Server)
Dapatkan bantuan
- Ide untuk SQL: Memiliki saran untuk meningkatkan SQL Server?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server): Ajukan pertanyaan SQL Server
- Stack Overflow (tag sql-server): Jawaban atas pertanyaan pengembangan SQL
- Reddit: Diskusi umum tentang SQL Server
- Syarat dan Informasi Lisensi Microsoft SQL Server
- Opsi dukungan untuk pengguna bisnis
- Bantuan dan umpan balik SQL Server tambahan
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