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 in of out optie bevat zonder de bestandsindelingsswitch (-f) of een schakeloptie voor gegevensindeling (-n, -c, -wof -N), wordt de opdrachtprompt voor de veldlengte van elk gegevensveld als volgt gevraagd:

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, wordt met de bcp-opdracht geen veldlengte gevraagd. 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 standaard veldlengte 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 1
numeriek 41 1
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
vector N/B 2

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

2 Conversie van vectorgegevenstype naar en van teken is niet toegestaan.

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 1
numeriek 1
uniqueidentifier 16
tijdstempel 8
vector 8-byte vectorheader + float-matrixgrootte

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