Delen via


Veldlengte opgeven met behulp van bcp (SQL Server)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

De veldlengte geeft het maximum aantal tekens aan dat nodig is om gegevens in tekenindeling weer te geven. De veldlengte is al bekend als de gegevens zijn opgeslagen in de systeemeigen indeling; Het gegevenstype int neemt bijvoorbeeld 4 bytes in beslag. Als u 0 voor de lengte van het voorvoegsel hebt aangegeven, vraagt de bcp-opdracht u om veldlengte, de standaardveldlengte en de impact van veldlengte op gegevensopslag in gegevensbestanden die tekengegevens bevatten.

De bcp-prompt voor Veldlengte

Als een interactieve bcp-opdracht de optie in of uit bevat zonder de bestandsindelingsswitch (-f) of een schakeloptie voor gegevensindeling (-n, -c, -w of -N), vraagt de opdracht als volgt om de veldlengte van elk gegevensveld:

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

Zie Gegevensindelingen opgeven voor compatibiliteit bij het gebruik van bcp (SQL Server) voor een voorbeeld waarin deze prompt in context wordt weergegeven.

Opmerking

Nadat u alle velden in een bcp opdracht interactief hebt opgegeven, wordt u gevraagd uw antwoorden op te slaan voor elk veld in een bestand met een niet-XML-indeling. Zie Niet-XML-indelingsbestanden (SQL Server) voor meer informatie over bestanden zonder XML-indeling.

Of een bcp-opdrachtprompt voor veldlengte afhankelijk is van verschillende factoren, als volgt:

  • Wanneer u gegevenstypen kopieert die niet van vaste lengte zijn en u een voorvoegsellengte van 0 opgeeft, vraagt bcp om een veldlengte.

  • Bij het converteren van niet-tekengegevens naar tekengegevens, stelt bcp een standaardveldlengte voor die groot genoeg is om de gegevens op te slaan.

  • Als het bestandstype niet-character is, vraagt de bcp-opdracht niet om een veldlengte. De gegevens worden opgeslagen in de systeemeigen microsoft SQL Server-gegevensweergave (systeemeigen indeling).

Standaardveldlengten gebruiken

Over het algemeen raadt Microsoft u aan de standaardwaarden voor bcp te accepteren voor de veldlengte. Wanneer een gegevensbestand voor de tekenmodus wordt gemaakt, zorgt het gebruik van de standaardveldlengte ervoor dat gegevens niet worden afgekapt en dat er geen numerieke overloopfouten optreden.

Als u een veldlengte opgeeft die onjuist is, kunnen er problemen optreden. Als u bijvoorbeeld numerieke gegevens kopieert en u een veldlengte opgeeft die te kort is voor de gegevens, drukt het bcp-hulpprogramma een overloopbericht af en kopieert de gegevens niet. Als u datum/tijd-gegevens exporteert en een veldlengte opgeeft van minder dan 26 bytes voor de tekenreeks, worden de gegevens door het bcp-hulpprogramma afgekapt zonder een foutbericht.

Belangrijk

Wanneer de standaardgrootteoptie wordt gebruikt, verwacht SQL Server een hele tekenreeks te lezen. In sommige situaties kan het gebruik van een standaardveldlengte leiden tot de foutmelding "onverwacht einde van bestand". Deze fout treedt doorgaans op met het geld - en datum/tijd-gegevenstype wanneer slechts een deel van het verwachte veld in het gegevensbestand voorkomt; Wanneer bijvoorbeeld een datum/tijd-waarde van mm/dd/jj wordt opgegeven zonder het tijdonderdeel en dus korter is dan de verwachte lengte van 24 tekens van een datum/tijd-waarde in tekennotatie . Als u dit type fout wilt voorkomen, gebruikt u veldeindtekens of gegevensvelden met een vaste lengte of wijzigt u de standaardveldlengte door een andere waarde op te geven.

Standaardveldlengten voor tekenbestandsopslag

De volgende tabel bevat de standaardveldlengten voor gegevens die moeten worden opgeslagen als een type tekenbestandsopslag. Nullable data heeft dezelfde lengte als niet-nulle gegevens.

Gegevenstype Standaardlengte (tekens)
teken Lengte gedefinieerd voor de kolom
varchar Lengte gedefinieerd voor de kolom
nchar Twee keer de lengte die is gedefinieerd voor de kolom
nvarchar Twee keer de lengte die is gedefinieerd voor de kolom
Text 0
ntext 0
bit 1
binary Twee keer de lengte die is gedefinieerd voor de kolom + 1
varbinary Twee keer de lengte die is gedefinieerd voor de kolom + 1
image 0
datetime 24
smalldatetime 24
float 30
echte 30
int 12
bigint 19
smallint 7
tinyint 5
geld 30
kleingeld 30
decimal 41*
numeriek 41*
uniqueidentifier 37
tijdstempel 17
varchar(max) 0
varbinary(max) 0
nvarchar(max) 0
UDT Lengte van de door de gebruiker gedefinieerde term (UDT) kolom
XML 0

*Zie decimale en numerieke gegevenstypen (Transact-SQL) voor meer informatie over de decimale en numerieke gegevenstypen.

Opmerking

Een kolom van het type tinyint kan waarden hebben van 0 tot en met 255; het maximum aantal tekens dat nodig is om een willekeurig getal in dat bereik weer te geven, is drie (waarden 100 tot en met 255).

Standaardveldlengten voor systeemeigen bestandsopslag

De volgende tabel bevat de standaardveldlengten voor gegevens die moeten worden opgeslagen als systeemeigen bestandstype. nl-NL: Gegevens die 'null' kunnen zijn, hebben dezelfde lengte als gegevens die dat niet zijn, en tekengegevens worden altijd opgeslagen in tekenformaat.

Gegevenstype Standaardlengte (tekens)
bit 1
binary Lengte gedefinieerd voor de kolom
varbinary Lengte gedefinieerd voor de kolom
image 0
datetime 8
smalldatetime 4
float 8
echte 4
int 4
bigint 8
smallint 2
tinyint 1
geld 8
kleingeld 4
decimal *
numeriek *
uniqueidentifier 16
tijdstempel 8

*Zie decimale en numerieke gegevenstypen (Transact-SQL) voor meer informatie over de decimale en numerieke gegevenstypen.

In alle voorgaande gevallen gebruikt u een lengtevoorvoegsel met het standaard bestandsopslagtype en de standaardveldlengte om een gegevensbestand voor later herladen in SQL Server te creƫren dat de opslagruimte tot een minimum beperkt.

Zie ook

bcp Utility
gegevenstypen (Transact-SQL)
Veld- en rijeindtekens opgeven (SQL Server)
Lengte van voorvoegsel opgeven in gegevensbestanden met behulp van bcp (SQL Server)
Bestandstype opgeven met behulp van bcp (SQL Server)
Null-waarden behouden of standaardwaarden gebruiken tijdens het bulksgewijs importeren (SQL Server)