Určení délky pole pomocí bcp (SQL Server)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticssql database v Microsoft Fabric

Délka pole označuje maximální počet znaků, které jsou nutné k reprezentaci dat ve formátu znaků. Délka pole je již známa, pokud jsou data uložena v nativním formátu; Například datový typ int přijímá 4 bajty. Pokud jste pro délku předpony označili hodnotu 0, příkaz bcp vás vyzve k zadání délky pole, výchozí délky polí a dopadu délky pole na datové úložiště v datových souborech, které obsahují data typu char .

Výzva bcp k zadání délky pole

Pokud interaktivní příkaz bcp obsahuje možnost in nebo out bez přepínače formátu souboru (-f) nebo přepínače formátu dat (-n, -c, -w nebo -N), příkaz se dotáže na délku každého datového pole následovně:

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

Příklad, který ukazuje tuto výzvu v kontextu, viz Určení formátů dat pro kompatibilitu při použití bcp (SQL Server).

Poznámka:

Jakmile interaktivně zadáte všechna pole v příkazu bcp, příkazový řádek uloží odpovědi pro každé pole v souboru bez formátu XML. Další informace o formátových souborech jiných než XML naleznete v tématu Soubory formátu JINÉ NEŽ XML (SQL Server).</a0>

Zda příkaz bcp vyžaduje zadání délky pole, závisí na několika faktorech:

  • Při kopírování datových typů, které nemají pevnou délku a zadáte délku předpony 0, bcp zobrazí výzvu k zadání délky pole.

  • Při převodu dat noncharacter na data znaků bcp navrhne výchozí délku pole dostatečně velkou pro uložení dat.

  • Pokud je typ úložiště souborů noncharacter, příkaz bcp nezobrazí výzvu k zadání délky pole. Data jsou uložena v nativní reprezentaci dat Microsoft SQL Serveru (nativní formát).

Použít výchozí délky polí

Microsoft obecně doporučuje přijmout výchozí hodnoty navrhované bcp pro délku pole. Při vytváření znakového datového souboru použití výchozí délky pole zajistí, že data nejsou oříznuta a nedochází k chybám přetečení čísel.

Pokud zadáte nesprávnou délku pole, může dojít k problémům. Pokud například kopírujete číselná data a zadáte délku pole, která je pro data příliš krátká, nástroj bcp vytiskne zprávu přetečení a data nezkopíruje. Pokud také exportujete data datetime a zadáte délku pole menší než 26 bajtů pro řetězec znaků, nástroj bcp zkrátí data bez chybové zprávy.

Důležité

Pokud se použije výchozí možnost velikosti, SQL Server očekává, že přečte celý řetězec. V některých situacích může použití výchozí délky pole vést k chybě "neočekávaný konec souboru". K této chybě obvykle dochází u datových typů money a datetime, pokud se v datovém souboru vyskytuje pouze část očekávaného pole; pokud je například zadána hodnota datetimemm/dd/yy bez časové komponenty a je tedy kratší než očekávaná 24znaková délka hodnoty datetime ve formátu char. Chcete-li se tomuto typu chyby vyhnout, použijte ukončovací nástavce polí nebo datová pole s pevnou délkou nebo změňte výchozí délku pole zadáním jiné hodnoty.

Výchozí délky pole pro ukládání souborů znaků

Následující tabulka uvádí výchozí délky polí pro ukládání dat jako typ úložiště typu znak-soubor. Nulovatelné údaje mají stejnou délku jako nenulová data.

Datový typ Výchozí délka (znaky)
znak Délka definovaná pro sloupec
varchar Délka definovaná pro sloupec
nchar Dvakrát délka definovaná pro sloupec
nvarchar Dvakrát délka definovaná pro sloupec
Text 0
ntext 0
bit 1
binary Dvojnásobek délky definované pro sloupec + 1
varbinary Dvojnásobek délky definované pro sloupec + 1
image 0
datetime dvacet čtyři
smalldatetime dvacet čtyři
float 30
skutečné 30
int 12
bigint 19
smallint 7
tinyint 5
peníze 30
málo peněz 30
decimal 41 1
číselný 41 1
uniqueidentifier 37
časová značka 17
varchar(max) 0
varbinary(max) 0
nvarchar(max) 0
UDT Délka sloupce definovaného uživatelem (UDT)
XML 0
vector Není k dispozici 2

1 Další informace o desetinných a číselných datových typech naleznete v tématu Desetinné a číselné (Transact-SQL).

2 Převod datového typu vektoru na a z znaku není povolen.

Poznámka:

Sloupec typu tinyint může mít hodnoty od 0 do 255; Maximální počet znaků potřebných k reprezentaci libovolného čísla v dané oblasti je tři (představující hodnoty 100 až 255).

Výchozí délky polí pro nativní úložiště souborů

Následující tabulka uvádí výchozí délky polí pro ukládání dat jako nativního typu úložiště souborů. Data s možnou hodnotou null mají stejnou délku jako nenulová data a znaková data se vždy ukládají ve formátu znaků.

Datový typ Výchozí délka (znaky)
bit 1
binary Délka definovaná pro sloupec
varbinary Délka definovaná pro sloupec
image 0
datetime 8
smalldatetime 4
float 8
skutečné 4
int 4
bigint 8
smallint 2
tinyint 1
peníze 8
málo peněz 4
decimal 1
číselný 1
uniqueidentifier 16
časová značka 8
vector 8 bajtové vektorové záhlaví + velikost plovoucího pole

1 Další informace o desetinných a číselných datových typech naleznete v tématu desetinné a číselné (Transact-SQL).

Ve všech předchozích případech vytvořte datový soubor pro pozdější opětovné načtení do SQL Serveru, který uchovává prostor úložiště na minimum, použijte předponu délky s výchozím typem úložiště a výchozí délkou pole.