Tentukan Panjang Bidang dengan Menggunakan bcp (SQL Server)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Panjang bidang menunjukkan jumlah maksimum karakter yang diperlukan untuk mewakili data dalam format karakter. Panjang bidang sudah diketahui jika data disimpan dalam format asli; misalnya, jenis data int membutuhkan 4 byte. Jika Anda telah menunjukkan 0 untuk panjang awalan, perintah bcp meminta panjang bidang, panjang bidang default, dan dampak panjang bidang pada penyimpanan data dalam file data yang berisi data karakter .

Perintah bcp untuk Panjang Bidang

Jika perintah bcp interaktif berisi opsi masuk atau keluar tanpa sakelar file format (-f) atau sakelar format data (-n, -c, -w, atau -N), perintah meminta panjang bidang setiap bidang data, sebagai berikut:

Enter length of field <field_name> [<default>]:

Untuk contoh yang memperlihatkan perintah ini dalam konteks, lihat Menentukan Format Data untuk Kompatibilitas saat Menggunakan bcp (SQL Server).

Catatan

Setelah Anda secara interaktif menentukan semua bidang dalam perintah bcp , perintah akan meminta Anda menyimpan respons untuk setiap bidang dalam file format non-XML. Untuk informasi selengkapnya tentang file format non-XML, lihat File Format Non-XML (SQL Server).

Apakah perintah bcp meminta panjang bidang tergantung pada beberapa faktor, sebagai berikut:

  • Saat Anda menyalin jenis data yang tidak memiliki panjang tetap dan Anda menentukan panjang awalan 0, bcp meminta panjang bidang.

  • Saat mengonversi data noncharacter ke data karakter, bcp menyarankan panjang bidang default yang cukup besar untuk menyimpan data.

  • Jika jenis penyimpanan file noncharacter, perintah bcp tidak meminta panjang bidang. Data disimpan dalam representasi data asli Microsoft SQL Server (format asli).

Menggunakan Panjang Bidang Default

Umumnya, Microsoft menyarankan agar Anda menerima nilai default yang disarankan bcp untuk panjang bidang. Saat file data mode karakter dibuat, menggunakan panjang bidang default memastikan bahwa data tidak terpotok dan kesalahan luapan numerik tidak terjadi.

Jika Anda menentukan panjang bidang yang salah, masalah dapat terjadi. Misalnya, jika Anda menyalin data numerik dan menentukan panjang bidang yang terlalu pendek untuk data, utilitas bcp mencetak pesan luapan dan tidak menyalin data. Selain itu, jika Anda mengekspor data tanggalwaktu dan menentukan panjang bidang kurang dari 26 byte untuk string karakter, utilitas bcp memotong data tanpa pesan kesalahan.

Penting

Saat opsi ukuran default digunakan, SQL Server mengharapkan untuk membaca seluruh string. Dalam beberapa situasi, penggunaan panjang bidang default dapat menyebabkan kesalahan "akhir file yang tidak terduga". Biasanya, kesalahan ini terjadi dengan jenis data uang dan tanggalwaktu ketika hanya sebagian dari bidang yang diharapkan yang terjadi dalam file data; misalnya, ketika nilai tanggalwaktumm/dd/yy ditentukan tanpa komponen waktu dan, oleh karena itu, lebih pendek dari panjang 24 karakter yang diharapkan dari nilai tanggalwaktu dalam format karakter . Untuk menghindari jenis kesalahan ini, gunakan terminator bidang atau bidang data dengan panjang tetap, atau ubah panjang bidang default dengan menentukan nilai lain.

Panjang Bidang Default untuk Penyimpanan File Karakter

Tabel berikut ini mencantumkan panjang bidang default untuk data yang akan disimpan sebagai jenis penyimpanan file karakter. Data yang dapat diubah ke null memiliki panjang yang sama dengan data nonnull.

Jenis Data Panjang default (karakter)
char Panjang yang ditentukan untuk kolom
varchar Panjang yang ditentukan untuk kolom
nchar Dua kali panjang yang ditentukan untuk kolom
nvarchar Dua kali panjang yang ditentukan untuk kolom
Teks 0
ntext 0
bit 1
binary Dua kali panjang yang ditentukan untuk kolom + 1
varbinary Dua kali panjang yang ditentukan untuk kolom + 1
gambar 0
datetime 24
smalldatetime 24
Float 30
nyata 30
int 12
bigint 19
smallint 7
tinyint 5
money 30
smallmoney 30
desimal 41*
numerik 41*
uniqueidentifier 37
timestamp 17
varchar(max) 0
varbinary(max) 0
nvarchar(maks) 0
UDT Panjang kolom istilah yang ditentukan pengguna (UDT)
XML 0

*Untuk informasi selengkapnya tentang jenis data desimal dan numerik , lihat desimal dan numerik (Transact-SQL).

Catatan

Kolom jenis tinyint dapat memiliki nilai dari 0 hingga 255; jumlah maksimum karakter yang diperlukan untuk mewakili angka apa pun dalam rentang tersebut adalah tiga (mewakili nilai 100 hingga 255).

Panjang Bidang Default untuk Penyimpanan File Asli

Tabel berikut mencantumkan panjang bidang default untuk data yang akan disimpan sebagai jenis penyimpanan file asli. Data yang dapat diubah ke null memiliki panjang yang sama dengan data nonnull, dan data karakter selalu disimpan dalam format karakter.

Jenis Data Panjang default (karakter)
bit 1
binary Panjang yang ditentukan untuk kolom
varbinary Panjang yang ditentukan untuk kolom
gambar 0
datetime 8
smalldatetime 4
Float 8
nyata 4
int 4
bigint 8
smallint 2
tinyint 1
money 8
smallmoney 4
desimal *
numerik *
uniqueidentifier 16
timestamp 8

*Untuk informasi selengkapnya tentang jenis data desimal dan numerik , lihat desimal dan numerik (Transact-SQL).

Dalam semua kasus sebelumnya, untuk membuat file data untuk dimuat ulang nanti ke SQL Server yang menjaga ruang penyimpanan tetap minimum, gunakan awalan panjang dengan jenis penyimpanan file default dan panjang bidang default.

Lihat juga

utilitas bcp
Tipe Data (Transact-SQL)
Tentukan Terminator Bidang dan Baris (SQL Server)
Tentukan Panjang Awalan dalam File Data dengan Menggunakan bcp (SQL Server)
Tentukan Jenis Penyimpanan File dengan Menggunakan bcp (SQL Server)
Pertahankan Null atau Gunakan Nilai Default Selama Impor Massal (SQL Server)