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
Analytics Platform System (PDW)
File data yang berisi nilai identitas dapat diimpor secara massal ke dalam instans Microsoft SQL Server.
Secara default, nilai untuk kolom identitas dalam file data yang diimpor diabaikan dan SQL Server menetapkan nilai unik secara otomatis. Nilai unik didasarkan pada nilai awal dan kenaikan yang ditentukan selama pembuatan tabel.
Jika file data tidak berisi nilai untuk kolom pengidentifikasi dalam tabel, gunakan file format untuk menentukan bahwa kolom pengidentifikasi dalam tabel harus dilewati saat mengimpor data. Lihat Menggunakan File Format untuk Melewati Kolom Tabel (SQL Server) untuk informasi tambahan.
Pertahankan nilai identitas
Untuk mencegah SQL Server menetapkan nilai identitas saat mengimpor baris data secara massal ke dalam tabel, gunakan pengualifikasi perintah keep-identity yang sesuai. Saat Anda menentukan kualifikasi keep-identity, SQL Server menggunakan nilai identitas dalam file data.
Kualifikasi ini adalah sebagai berikut:
| Perintah | Kualifikasi mempertahankan identitas | Jenis kualifikasi |
|---|---|---|
bcp |
-E |
Pengalih |
BULK INSERT |
KEEPIDENTITY |
Argumen |
INSERT ... SELECT * FROM OPENROWSET(BULK...) |
KEEPIDENTITY | Petunjuk tabel |
Untuk informasi selengkapnya, lihat Utilitas bcp, BULK INSERT (Transact-SQL), OPENROWSET BULK (Transact-SQL), INSERT (Transact-SQL), SELECT (Transact-SQL), dan Petunjuk tabel (Transact-SQL).
Catatan
Untuk membuat nomor yang bertambah otomatis yang dapat digunakan dalam beberapa tabel atau yang dapat dipanggil dari aplikasi tanpa merujuk tabel apa pun, lihat Nomor Urut.
Contoh Kondisi Pengujian
Contoh dalam topik ini didasarkan pada tabel, file data, dan file format yang ditentukan di bawah ini.
Tabel Sampel
Skrip di bawah ini membuat database pengujian dan tabel bernama myIdentity. Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myIdentity (
PersonID smallint IDENTITY(1,1) NOT NULL,
FirstName varchar(25) NOT NULL,
LastName varchar(30) NOT NULL,
BirthDate date
);
File Data Contoh
Menggunakan Notepad, buat file D:\BCP\myIdentity.bcp kosong dan sisipkan data di bawah ini.
3,Anthony,Grosse,1980-02-23
2,Alica,Fatnowna,1963-11-14
1,Stella,Rosenhain,1992-03-02
4,Miller,Dylan,1954-01-05
Atau, Anda dapat menjalankan skrip PowerShell berikut untuk membuat dan mengisi file data:
cls
# revise directory as desired
$dir = 'D:\BCP\';
$bcpFile = $dir + 'myIdentity.bcp';
# Confirm directory exists
IF ((Test-Path -Path $dir) -eq 0)
{
Write-Host "The path $dir does not exist; please create or modify the directory.";
RETURN;
};
# clear content, will error if file does not exist, can be ignored
Clear-Content -Path $bcpFile -ErrorAction SilentlyContinue;
# Add data
Add-Content -Path $bcpFile -Value '3,Anthony,Grosse,1980-02-23';
Add-Content -Path $bcpFile -Value '2,Alica,Fatnowna,1963-11-14';
Add-Content -Path $bcpFile -Value '1,Stella,Rosenhain,1992-03-02';
Add-Content -Path $bcpFile -Value '4,Miller,Dylan,1954-01-05';
#Review content
Get-Content -Path $bcpFile;
Invoke-Item $bcpFile;
Contoh file format Non-XML
SQL Server mendukung dua jenis file format: format non-XML dan format XML. Format non-XML adalah format asli yang didukung oleh versi SQL Server sebelumnya. Untuk informasi selengkapnya, lihat Menggunakan file format Non-XML (SQL Server).
Perintah berikut akan menggunakan utilitas bcp untuk menghasilkan file format non-xml, myIdentity.fmt, berdasarkan skema myIdentity.
- Untuk menggunakan perintah bcp untuk membuat file format, tentukan argumen
formatdan gunakannulalih-alih jalur file data. - Opsi format juga memerlukan opsi
-f. -
cdigunakan untuk menentukan data karakter -
t,digunakan untuk menentukan koma sebagai pembatas bidang -
Tdigunakan untuk menentukan koneksi tepercaya menggunakan keamanan terintegrasi.
Pada prompt perintah, masukkan perintah berikut:
bcp TestDatabase.dbo.myIdentity format nul -c -f D:\BCP\myIdentity.fmt -t, -T
REM Review file
Notepad D:\BCP\myIdentity.fmt
Penting
Pastikan file format non-XML Anda berakhir dengan return\line feed pengangkutan. Jika tidak, Anda kemungkinan akan menerima pesan kesalahan berikut:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Contoh
Contohnya menggunakan database, datafile, dan format file yang dibuat dalam artikel ini.
Gunakan bcp dan pertahankan Nilai Identitas tanpa file format
Tombolnya -E .
Pada prompt perintah, masukkan perintah berikut:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myIdentity;"
REM Import data
bcp TestDatabase.dbo.myIdentity IN D:\BCP\myIdentity.bcp -T -c -t, -E
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myIdentity;"
Gunakan bcp dan pertahankan nilai Identitas dengan file format non-XML
Tombol -E dan -f .
Pada prompt perintah, masukkan perintah berikut:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myIdentity;"
REM Import data
bcp TestDatabase.dbo.myIdentity IN D:\BCP\myIdentity.bcp -f D:\BCP\myIdentity.fmt -T -E
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myIdentity;"
Gunakan bcp dan nilai Identitas yang dihasilkan tanpa menggunakan file format
Menggunakan pengaturan bawaan.
Pada prompt perintah, masukkan perintah berikut:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myIdentity;"
REM Import data
bcp TestDatabase.dbo.myIdentity IN D:\BCP\myIdentity.bcp -T -c -t,
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myIdentity;"
Menggunakan bcp dan Nilai Identitas yang dihasilkan dengan file format non-XML
Gunakan default dan -f opsi.
Pada prompt perintah, masukkan perintah berikut:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myIdentity;"
REM Import data
bcp TestDatabase.dbo.myIdentity IN D:\BCP\myIdentity.bcp -f D:\BCP\myIdentity.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myIdentity;"
Gunakan BULK INSERT dan pertahankan Nilai Identitas tanpa file format
Argumen KEEPIDENTITY.
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
BULK INSERT dbo.myIdentity
FROM 'D:\BCP\myIdentity.bcp'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
KEEPIDENTITY
);
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Gunakan BULK INSERT dan pertahankan nilai Identity dengan menggunakan file format non-XML
Argumen KEEPIDENTITY dan FORMATFILE .
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
BULK INSERT dbo.myIdentity
FROM 'D:\BCP\myIdentity.bcp'
WITH (
FORMATFILE = 'D:\BCP\myIdentity.fmt',
KEEPIDENTITY
);
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Gunakan BULK INSERT dan nilai Identitas yang dihasilkan tanpa file format
Menggunakan pengaturan bawaan.
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
BULK INSERT dbo.myIdentity
FROM 'D:\BCP\myIdentity.bcp'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ','
);
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Menggunakan BULK INSERT dan nilai Identity yang dihasilkan dengan file format non-XML
Menggunakan pengaturan bawaan dan argumen FORMATFILE.
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
BULK INSERT dbo.myIdentity
FROM 'D:\BCP\myIdentity.bcp'
WITH (
FORMATFILE = 'D:\BCP\myIdentity.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Gunakan OPENROWSET BULK dan pertahankan nilai Identitas dengan file format non-XML
Petunjuk tabel KEEPIDENTITY dan argumen FORMATFILE.
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
INSERT INTO dbo.myIdentity
WITH (KEEPIDENTITY)
(PersonID, FirstName, LastName, BirthDate)
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myIdentity.bcp',
FORMATFILE = 'D:\BCP\myIdentity.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Menggunakan OPENROWSET BULK dan nilai-nilai Identitas yang dihasilkan dengan file format non-XML
Menggunakan default dan argumen FORMATFILE.
Jalankan Transact-SQL berikut di Microsoft SQL Server Management Studio (SSMS):
USE TestDatabase;
GO
TRUNCATE TABLE dbo.myIdentity; -- for testing
INSERT INTO dbo.myIdentity
(FirstName, LastName, BirthDate)
SELECT FirstName, LastName, BirthDate
FROM OPENROWSET (
BULK 'D:\BCP\myIdentity.bcp',
FORMATFILE = 'D:\BCP\myIdentity.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myIdentity;
Tugas Terkait
Untuk menggunakan file format
Menggunakan file format untuk mengimpor data secara massal (SQL Server)
Menggunakan file format untuk memetakan kolom tabel ke bidang file data (SQL Server)
Menggunakan file format untuk melewati bidang data (SQL Server)
Menggunakan File Format untuk Melewati Kolom Tabel (SQL Server)
Untuk menggunakan format data untuk impor massal atau ekspor massal
Mengimpor data format asli dan karakter dari versi SQL Server yang lebih lama
Menggunakan format karakter untuk mengimpor atau mengekspor data (SQL Server)
Menggunakan format asli untuk mengimpor atau mengekspor data (SQL Server)
Gunakan format karakter unicode untuk mengimpor atau mengekspor data (SQL Server)
Menggunakan Format Asli Unicode untuk Mengimpor atau Mengekspor Data (SQL Server)
Untuk menentukan format data untuk kompatibilitas saat menggunakan bcp
Tentukan terminator kolom dan baris (SQL Server)
Tentukan panjang awalan dalam file data menggunakan bcp (SQL Server)
Tentukan jenis penyimpanan file menggunakan bcp (SQL Server)