Freigeben über


Speichern von Daten im Zeichenformat

Wie Daten im Zeichenformat in einer exportierten Datendatei gespeichert werden, hängt davon ab, wie die Daten in der Microsoft SQL Server-Tabelle gespeichert wurden. Die folgenden beiden Speichermuster sind wichtig:

  • SQL Server char-Daten

  • Andere, in den char-Datenspeichertyp konvertierte Datentypen

Speichermuster für char-Daten von SQL Server

SQL Server char-Daten werden in der Datendatei immer als vollständige Länge der definierten Spalte gespeichert. So belegt beispielsweise eine als char(10) definierte Spalte immer 10 Zeichen in der Datendatei, unabhängig von der Länge der in der Spalte gespeicherten Daten. Falls die char-Daten kürzer als die Feldlänge sind, werden die Daten mit Leerzeichen aufgefüllt. Weitere Informationen finden Sie unter SET ANSI_PADDING (Transact-SQL). Für den varchar-Datentyp wird jedoch nur die tatsächliche Anzahl von Zeichen gespeichert, außer Sie wählen ein Präfix oder ein Abschlusszeichen.

Speichermuster für andere in char-Daten konvertierte Datentypen

Die Menge an Speicherplatz, die in der Datendatei für nicht auf Zeichen basierende Daten, die im Zeichenformat gespeichert werden, zugeordnet ist, hängt wie folgt von der Kombination aus Feldlänge, Präfixlänge und Abschlusszeichen ab:

  • Bei einer Präfixlänge von 0 und keinem Abschlusszeichen wird das Feld gemäß dem Feldlängenwert so behandelt, als ob es eine feste Länge hat. Wenn eine Präfixlänge von 0 und keine Abschlusszeichen angegeben werden, ordnet bcp den an der Eingabeaufforderung für die Feldlänge angezeigten Speicherplatz zu. Dies entspricht dem größtmöglichen Speicherplatz, der für den fraglichen Datentyp maximal benötigt werden könnte. So kann ermittelt werden, wo ein Feld endet und das nächste beginnt.

  • Bei einer Präfixlänge von 0 und einem Abschlusszeichen wird der Feldlängenwert nicht berücksichtigt. Der von dem Feld verwendete Speicherplatz entspricht der Länge der Daten plus möglichen Abschlusszeichen.

    Wichtiger HinweisWichtig

    Das gleichzeitige Angeben eines Präfixes und eines Abschlusszeichens wird nur in Nicht-XML-Formatdateien unterstützt.

  • Bei einer Präfixlänge von 1, 2 oder 4 wird der Feldlängenwert nicht berücksichtigt. Der von dem Feld verwendete Speicherplatz entspricht der Länge der Feldpräfixe plus möglichen Abschlusszeichen.

In allen vorherigen Fällen können Sie eine Datendatei erstellen, die später in SQL Server erneut geladen werden soll, um den Speicherplatz auf ein Minimum zu reduzieren. Um den Speicherplatz zu reduzieren, verwenden Sie ein Längenpräfixzeichen mit dem Standard-Dateispeichertyp und der Standardfeldlänge.

Beispiele

Die folgenden Beispiele veranschaulichen die Interaktion zwischen Feldlänge, Präfixlänge und Abschlusszeichen, wenn die Daten im char-Format gespeichert sind. Ein Präfixlängenwert wird, soweit vorhanden, durch P dargestellt. Ein Abschlusszeichen wird, soweit vorhanden, durch T dargestellt. Auslassungspunkte (…) zeigen an, dass sich das Muster bei jedem Feld wiederholt.

Beispiele für Speichermuster für char-Daten von SQL Server:

HinweisHinweis

Die char-Daten werden immer in vollständiger Länge gespeichert (d. h. mit mindestens einem Leerzeichen (' ') als Auffüllung).

Das Tabellenschema lautet t1 (c1 char(8)). Bei den Beispielen wird von einem Wert mit 5 Zeichen ausgegangen (dargestellt als Hello), der in einem Feld mit einer Länge von 8 Zeichen gespeichert ist. Bei allen Datenfeldern in den Beispielen müssen drei Leerzeichen an den aus 5 Zeichen bestehenden Wert Hello angefügt werden. Die angefügten Leerzeichen werden durch drei Punkte dargestellt (· ·).

 

Präfixlänge = 0

Präfixlänge = 1, 2 oder 4

Kein Abschlusszeichen:

Hello∙∙∙Hello∙∙∙...

PHello∙∙∙PHello∙∙∙...

Abschlusszeichen:

Hello∙∙∙THello∙∙∙T...

PHello∙∙∙TPHello∙∙∙T...

HinweisHinweis
Dieses Beispiel ist nur auf Nicht-XML-Formatdateien anwendbar.

Beispiele für Speichermuster für andere in char-Daten konvertierte Datentypen

Das Tabellenschema lautet t1 (c1 int), und jede Zeile hat einen ganzzahligen Wert von 999.

HinweisHinweis

Für Daten, die in char-Speicherdaten konvertiert werden, wenn eine Präfixlänge von 1, 2 oder 4 oder ein Feldabschlusszeichen vorhanden ist, müssen keine Leerzeichen an den Datenwert angefügt werden.

 

Präfixlänge = 0

Präfixlänge = 1, 2 oder 4

Kein Abschlusszeichen:

999∙∙999∙∙...

P999P999...

Abschlusszeichen:

999T999T...

P999TP999T...

HinweisHinweis
Dieses Beispiel ist nur auf Nicht-XML-Formatdateien anwendbar.
HinweisHinweis

Falls Sie keine Präfixlänge bzw. kein Abschlusszeichen angeben, wird der ganzzahlige Wert mithilfe von 12 Bytes gespeichert, wobei in den letzten 9 Bytes Leerzeichen gespeichert werden.