Bagikan melalui


Tentukan panjang bidang dengan menggunakan bcp (SQL Server)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform 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 prefiks, perintah bcp akan meminta Anda memasukkan panjang bidang, panjang bidang bawaan, serta dampak panjang bidang tersebut terhadap penyimpanan data dalam file data yang berisi data char.

Instruksi bcp untuk panjang bidang

Jika perintah interaktif bcp berisi opsi in atau out tanpa sakelar file format (-f) atau sakelar format data (-n, -c, -w, atau -N), perintah akan meminta panjang bidang untuk 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 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 adalah noncharacter, perintah bcp tidak meminta panjang bidang. Data disimpan dalam representasi data asli Microsoft SQL Server (format asli).

Gunakan panjang kolom default

Umumnya, Microsoft menyarankan agar Anda menerima nilai default yang disarankan bcp untuk panjang bidang. Saat file data dalam mode karakter dibuat, menggunakan panjang bidang bawaan memastikan bahwa data tidak terpotong dan kesalahan kelebihan angka 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 datetime dan menentukan panjang bidang karakter kurang dari 26 byte, utilitas bcp memotong data tanpa pesan kesalahan.

Penting

Ketika opsi ukuran default digunakan, SQL Server mengharapkan untuk membaca seluruh string. Dalam beberapa situasi, penggunaan panjang kolom default berpotensi menimbulkan kesalahan "akhir file yang tidak terduga". Biasanya, kesalahan ini terjadi dengan jenis data uang dan tanggal dan waktu ketika hanya sebagian dari bidang yang diharapkan tersembunyi dalam file data; misalnya, ketika nilai tanggal dan waktumm/dd/ ditentukan tanpa komponen waktu dan, oleh karena itu, lebih pendek dari panjang karakter 24 yang diharapkan dari nilai tanggal dan waktu dalam format char. 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 mencantumkan panjang bidang default untuk data yang akan disimpan sebagai jenis penyimpanan file karakter. Data nullable 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
biner 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
real 30
int 12
bigint 19
smallint 7
tinyint 5
uang 30
smallmoney 30
desimal 41 1
numerik 41 1
pengidentifikasi unik 37
timestamp 17
varchar(max) 0
varbinary(max) 0
nvarchar(maks) 0
UDT Panjang kolom istilah yang ditentukan pengguna (UDT)
XML 0
vector Tidak Berlaku 2

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

2 Konversi jenis data vektor ke dan dari karakter tidak diizinkan.

Catatan

Kolom tipe 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 standar untuk penyimpanan berkas asli

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

Jenis Data Panjang default (karakter)
bit 1
biner Panjang yang ditentukan untuk kolom
varbinary Panjang yang ditentukan untuk kolom
gambar 0
datetime 8
smalldatetime 4
float 8
real 4
int 4
bigint 8
smallint 2
tinyint 1
uang 8
smallmoney 4
desimal 1
numerik 1
pengidentifikasi unik 16
timestamp 8
vector Header vektor 8-byte + ukuran larik float

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