Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Gudang di Microsoft Fabric
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.
Komentar
Untuk informasi tentang tempat menemukan atau cara menjalankan utilitas bcp dan tentang konvensi sintaksis utilitas prompt perintah, lihat utilitas baris 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 pencatatan minimal dalam impor massal.
<,>,|,&, dan^adalah karakter shell perintah khusus, dan harus didahului oleh karakter escape (^), atau diapit dengan 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. Untuk informasi selengkapnya, lihat Menggunakan karakter khusus tambahan.bcp saat ini masih dalam pratinjau di Warehouse di Microsoft Fabric.
bcp tidak dapat mengimpor data di titik akhir analitik SQL di Microsoft Fabric.
Dukungan file data bawaan
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 terhitung atau timestamp 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 outmembuat file data bernamaCurrency Types.dat:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -cUntuk menentukan nama database yang berisi spasi atau tanda kutip, Anda harus menggunakan opsi .
-qUntuk nama pemilik, tabel, atau tampilan yang berisi spasi atau tanda kutip yang disematkan, Anda dapat:
Tentukan opsi
-q, atauMasukkan nama pemilik, tabel, atau 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 melakukan kueri data setelah pemrosesan 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 ketika Anda menentukan sakelar -c tanpa menentukan file format. |
SQLNCHAR atau SQLNVARCHAR |
Data dikirim sebagai Unicode. Efeknya sama dengan ketika Anda menentukan sakelar -w tanpa menentukan file format. |
SQLBINARY atau SQLVARYBIN |
Data dikirim tanpa konversi apa pun. |
Mode karakter (-c) dan praktik terbaik mode bawaan (-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-copsi atau-wjika Anda berencana untuk mengekspor data ke database non-SQL Server.(Administrator) Verifikasi data saat menggunakan
bcp out. Misalnya, saat Anda menggunakanbcp out,bcp in, lalubcp outmemverifikasi bahwa data diekspor dengan benar dan nilai terminator tidak digunakan sebagai bagian dari beberapa nilai data. Pertimbangkan untuk mengganti terminator default menggunakan opsi-tdan-rdengan 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 sebenarnya. Ini dapat dilakukan dengan menggunakan
-topsi 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 RESTORE Pernyataan 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. Ganti <server_name> dan nilai tempat penampung lainnya dengan nilai untuk lingkungan Anda.
Skrip Transact-SQL berikut membuat salinan kosong tabel WideWorldImporters.Warehouse.StockItemTransactions lalu menambahkan batasan kunci primer:
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;
A. Mengidentifikasi versi utilitas bcp
Pada command prompt, masukkan perintah berikut:
bcp -v
B. Menyalin baris tabel ke dalam file data (dengan koneksi tepercaya)
Contoh berikut mengilustrasikan opsi out pada tabel WideWorldImporters.Warehouse.StockItemTransactions.
Basic
Contoh ini membuat file data bernama
StockItemTransactions_character.bcpdan menyalin data tabel ke dalamnya menggunakan format karakter .Pada command prompt, masukkan perintah berikut:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Contoh ini membuat file data bernama
StockItemTransactions_native.bcpdan menyalin data tabel ke dalamnya menggunakan format asli . Contohnya juga: menentukan jumlah maksimum kesalahan sintaksis, file kesalahan, dan file output.Pada command prompt, 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 <server_name> -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 opsi out pada tabel WideWorldImporters.Warehouse.StockItemTransactions. 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 opsi in pada tabel WideWorldImporters.Warehouse.StockItemTransactions_bcp dengan menggunakan file yang dibuat sebelumnya.
Basic
Contoh ini menggunakan file data yang
StockItemTransactions_character.bcpdibuat sebelumnya.Pada command prompt, masukkan perintah berikut:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
Contoh ini menggunakan file data yang
StockItemTransactions_native.bcpdibuat sebelumnya. Contoh ini juga menggunakanTABLOCKpetunjuk, dan menentukan ukuran batch, jumlah maksimum kesalahan sintaks, file kesalahan, dan file output.Pada command prompt, 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 <server_name> -TTinjau
Error_in.logdanOutput_in.log.
E. Menyalin kolom tertentu ke dalam file data
Untuk menyalin kolom tertentu, Anda bisa menggunakan opsi .queryout Contoh berikut menyalin hanya kolom StockItemTransactionID dari tabel Warehouse.StockItemTransactions ke file data.
Pada command prompt, 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 yang bernama Amy Trefl dari tabel WideWorldImporters.Application.People ke dalam berkas data Amy_Trefl_c.bcp.
Note
Saklar -d digunakan untuk mengidentifikasi basis data.
Pada command prompt, 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.
Note
Pengalih -t digunakan untuk membuat file yang dibatasi koma.
Pada command prompt, masukkan perintah berikut:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. Membuat format file
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
Note
Pengalih -x hanya didukung di Windows.
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 instans SQL Server, gunakan opsi -f dengan sakelar in. 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.
Note
Sakelar -L digunakan untuk hanya mengimpor 100 entri pertama.
Pada command prompt, masukkan perintah berikut:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Note
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 dengan menentukan halaman kode 65001.
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. Contoh file keluaran menggunakan pemisah kolom dan baris kustom
Contoh ini menunjukkan dua file sampel, yang dihasilkan oleh bcp menggunakan terminator bidang dan baris kustom.
Buat tabel
dbo.T1ditempdbdatabase, dengan dua kolom,IDdanName.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'); GOBuat file output dari tabel contoh
dbo.T1, menggunakan pemisah bidang kustom.Dalam contoh ini,
-t ,menentukan pengakhiran bidang khusus. Ganti<server_name>dengan nilai untuk lingkungan Anda.bcp dbo.T1 out T1.txt -T -S <server_name> -d tempdb -w -t ,Berikut kumpulan hasilnya.
1,Natalia 2,Mark 3,RandolphBuat file output dari tabel
dbo.T1contoh, menggunakan penanda bidang kustom dan penanda baris kustom.Dalam contoh ini,
-t ,menentukan terminator bidang kustom, dan-r :menentukan terminator baris kustom. Ganti<server_name>dengan nilai untuk lingkungan Anda.bcp dbo.T1 out T1.txt -T -S <server_name> -d tempdb -w -t , -r :Berikut kumpulan hasilnya.
1,Natalia:2,Mark:3,Randolph:Note
Penanda akhir baris selalu ditambahkan, termasuk pada catatan terakhir. Namun, penanda akhir tidak ditambahkan pada 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)
Tentukan terminator kolom dan baris (SQL Server)
Menyimpan nilai null atau default selama impor massal (SQL Server)
Pertahankan nilai identitas saat mengimpor data secara massal (SQL Server)
Memformat file untuk mengimpor atau mengekspor data (SQL Server)
- Membuat file format dengan bcp (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)
Contoh impor dan ekspor dokumen XML secara massal (SQL Server)
Konten terkait
- Menyiapkan data untuk ekspor atau impor massal
- BULK INSERT (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 tentang SQL: Apakah Anda memiliki saran untuk meningkatkan SQL Server?
- Microsoft Tanya Jawab (SQL Server)
- DBA Stack Exchange (tag sql-server): Ajukan pertanyaan SQL Server
- Stack Overflow (tag sql-server): Jawaban atas pertanyaan pengembangan SQL
- 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 Mengedit dokumentasi Microsoft Learn.