Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die bcp_setcolfmt Funktion ersetzt die bcp_colfmt. Bei der Angabe der Spaltensortierung muss die bcp_setcolfmt-Funktion verwendet werden. bcp_setbulkmode können verwendet werden, um mehr als ein Spaltenformat anzugeben.
Diese Funktion bietet einen flexiblen Ansatz zum Angeben des Spaltenformats in einem Massenkopievorgang. Es wird verwendet, um einzelne Spaltenformatattribute festzulegen. Jeder Aufruf von bcp_setcolfmt legt ein Spaltenformatattribut fest.
Die bcp_setcolfmt-Funktion gibt das Quell- oder Zielformat der Daten in einer Benutzerdatei an. Bei Verwendung als Quellformat gibt bcp_setcolfmt das Format einer vorhandenen Datendatei an, die als Datenquelle in einer Massenkopie in einer Tabelle in SQL Server verwendet wird. Bei Verwendung als Zielformat wird die Datendatei mit den spaltenformaten erstellt, die mit bcp_setcolfmt angegeben sind.
Syntax
RETCODE bcp_setcolfmt (
HDBC
hdbc
,
INT
field
,
INT
property
,
void*
pValue
,
INT
cbValue
);
Argumente
hdbc
Das für den Massenkopiervorgang aktivierte ODBC-Verbindungshandle.
Feld
Ist die Ordnungsspaltennummer, für die die Eigenschaft festgelegt wird.
Eigentum
Ist eine der Eigenschaftskonstanten. Eigenschaftskonstanten werden in dieser Tabelle definiert.
| Eigentum | Wert | BESCHREIBUNG |
|---|---|---|
| BCP_FMT_TYPE | BYTE | Ist der Datentyp dieser Spalte in der Benutzerdatei. Wenn sich der Datentyp der entsprechenden Spalte in der Datenbanktabelle unterscheidet, konvertiert die Massenkopie die Daten nach Möglichkeit. Der BCP_FMT_TYPE-Parameter wird von den SQL Server-Datentyptoken in sqlncli.h anstelle der ODBC C-Datentypenaufzählungen aufgezählt. Sie können z. B. eine Zeichenfolge, einen ODBC-Typ SQL_C_CHAR, mithilfe des sqlCHARACTER-Typs angeben, der für SQL Server spezifisch ist. Um die Standarddatendarstellung für den SQL Server-Datentyp anzugeben, legen Sie diesen Parameter auf 0 fest. Bei einer Massenkopie aus SQL Server in eine Datei, wenn BCP_FMT_TYPE SQLDECIMAL oder SQLNUMERIC ist: - Wenn die Quellspalte nicht dezimal oder numerisch ist, werden die Standardgenauigkeit und -skalierung verwendet. - Wenn die Quellspalte dezimal oder numerisch ist, werden die Genauigkeit und die Skalierung der Quellspalte verwendet. |
| BCP_FMT_INDICATOR_LEN | INT | Ist die Länge in Byte des Indikators (Präfix). Sie ist die Länge eines Längen-/Nullindikators in Bytes innerhalb der Spaltendaten. Gültige Indikatorlängenwerte sind 0 (ohne Indikator), 1, 2 oder 4. Legen Sie diesen Parameter auf SQL_VARLEN_DATA fest, um die Standardmäßige Verwendung des Massenkopienindikators anzugeben. Indikatoren werden direkt vor daten und in der Datendatei direkt vor den Daten angezeigt, auf die sie angewendet werden. Wenn mehr als ein Mittel zum Angeben einer Datendateispaltenlänge verwendet wird (z. B. ein Indikator und eine maximale Spaltenlänge oder ein Indikator und eine Terminatorsequenz), wählt die Massenkopie die Spalte aus, die zu der geringsten Datenmenge führt, die kopiert wird. Datendateien, die durch Massenkopie generiert werden, wenn kein Benutzereingriff das Format der Daten anpasst, indikatoren enthalten, wenn die Spaltendaten in der Länge variieren können oder die Spalte NULL als Wert akzeptieren kann. |
| BCP_FMT_DATA_LEN | DBINT | Ist die Länge in Byte der Daten (Spaltenlänge) Es handelt sich um die maximale Länge der Daten dieser Spalte in der Benutzerdatei, nicht einschließlich der Länge eines Längenindikators oder Eines Terminators. Wenn BCP_FMT_DATA_LEN auf SQL_NULL_DATA festgelegt wird, wird angegeben, dass alle Werte in der Datendateispalte null sind oder auf NULL festgelegt werden sollen. Wenn BCP_FMT_DATA_LEN auf SQL_VARLEN_DATA festgelegt wird, wird angegeben, dass das System die Länge der Daten in jeder Spalte bestimmen soll. Bei einigen Spalten kann dies bedeuten, dass ein Längen-/NULL-Indikator generiert wird, um Daten einer Kopie aus SQL Server vorauszugehen, oder dass der Indikator in Daten in SQL Server kopiert wird. Bei SQL Server-Zeichen- und Binärdatentypen kann BCP_FMT_DATA_LEN SQL_VARLEN_DATA, SQL_NULL_DATA, 0 oder ein positiver Wert sein. Wenn BCP_FMT_DATA_LEN SQL_VARLEN_DATA ist, verwendet das System entweder den Längenindikator, falls vorhanden, oder eine Terminatorsequenz, um die Länge der Daten zu bestimmen. Wenn sowohl ein Längenindikator als auch eine Terminatorsequenz bereitgestellt werden, verwendet die Massenkopie das Element, das zu der geringsten Datenmenge führt, die kopiert wird. Wenn BCP_FMT_DATA_LEN SQL_VARLEN_DATA ist, handelt es sich beim Datentyp um ein SQL Server-Zeichen oder einen binären Typ, und weder ein Längenindikator noch eine Terminatorsequenz wird angegeben, gibt das System eine Fehlermeldung zurück. Wenn BCP_FMT_DATA_LEN 0 oder ein positiver Wert ist, verwendet das System BCP_FMT_DATA_LEN als maximale Datenlänge. Wenn jedoch zusätzlich zu einem positiven BCP_FMT_DATA_LEN ein Längenindikator oder eine Terminatorsequenz bereitgestellt wird, bestimmt das System die Datenlänge mithilfe der Methode, die zu der geringsten Datenmenge führt, die kopiert wird. Der BCP_FMT_DATA_LEN Wert stellt die Anzahl der Bytes von Daten dar. Wenn Zeichendaten durch Unicode-breite Zeichen dargestellt werden, stellt ein positiver BCP_FMT_DATA_LEN Parameterwert die Anzahl von Zeichen dar, die mit der Größe (in Byte) jedes Zeichens multipliziert werden. |
| BCP_FMT_TERMINATOR | LPCBYTE | Zeiger auf die Terminatorsequenz (entweder ANSI oder Unicode), die für diese Spalte verwendet werden soll. Dieser Parameter ist hauptsächlich für Zeichendatentypen nützlich, da alle anderen Typen eine feste Länge aufweisen oder bei Binären Daten einen Indikator der Länge erfordern, um die Anzahl der vorhandenen Bytes genau aufzuzeichnen. Um das Beenden extrahierter Daten zu vermeiden oder anzugeben, dass Daten in einer Benutzerdatei nicht beendet werden, legen Sie diesen Parameter auf NULL fest. Wenn mehr als ein Mittel zum Angeben der Länge einer Benutzerdateispalte verwendet wird (z. B. ein Terminator und ein Längenindikator oder ein Terminator und eine maximale Spaltenlänge), wählt die Massenkopie das Element aus, das zu der geringsten Datenmenge führt, die kopiert wird. Die Massenkopie-API führt bei Bedarf Unicode-zu-MBCS-Zeichenkonvertierung durch. Achten Sie darauf, dass sowohl die Zeichenfolge des Endatorbytes als auch die Länge der Bytezeichenfolge korrekt festgelegt sind. |
| BCP_FMT_SERVER_COL | INT | Ordnungsposition der Spalte in der Datenbank |
| BCP_FMT_COLLATION | LPCSTR | Sortierungsname. |
pValue
Ist der Zeiger auf den Wert, der der Eigenschaft zugeordnet werden soll. Jede Spaltenformateigenschaft kann einzeln festgelegt werden.
cbvalue
Ist die Länge des Eigenschaftenpuffers in Byte.
Rückkehr
SUCCEED oder FAIL.
Bemerkungen
Diese Funktion ersetzt die bcp_colfmt Funktion. Alle Funktionen von bcp_colfmt werden in bcp_setcolfmt Funktion bereitgestellt. Darüber hinaus wird auch Unterstützung für die Spaltensortierung bereitgestellt. Es wird empfohlen, die folgenden Spaltenformatattribute in der folgenden Reihenfolge festzulegen:
BCP_FMT_SERVER_COL
BCP_FMT_DATA_LEN
BCP_FMT_TYPE
Mit der funktion bcp_setcolfmt können Sie das Benutzerdateiformat für Massenkopien angeben. Bei Massenkopien enthält ein Format die folgenden Teile:
Eine Zuordnung von Benutzerdateispalten zu Datenbankspalten.
Der Datentyp jeder Benutzerdateispalte.
Die Länge des optionalen Indikators für jede Spalte.
Die maximale Länge der Daten pro Benutzerdateispalte.
Die optionale Endbytesequenz für jede Spalte.
Die Länge der optionalen Beendende Bytesequenz.
Jeder Aufruf von bcp_setcolfmt gibt das Format für eine Benutzerdateispalte an. Wenn Sie beispielsweise die Standardeinstellungen für drei Spalten in einer Datendatei mit fünf Spalten ändern möchten, rufen Sie zuerst bcp_columns(5) auf, und rufen Sie dann bcp_setcolfmt fünf Mal auf, wobei drei dieser Aufrufe Ihr benutzerdefiniertes Format festlegen. Legen Sie für die verbleibenden beiden Aufrufe BCP_FMT_TYPE auf 0 fest, und legen Sie BCP_FMT_INDICATOR_LENGTH, BCP_FMT_DATA_LEN und cbValue auf 0, SQL_VARLEN_DATA bzw. 0 fest. Dieses Verfahren kopiert alle fünf Spalten, drei mit ihrem angepassten Format und zwei mit dem Standardformat.
Die bcp_columns-Funktion muss aufgerufen werden, bevor bcp_setcolfmt aufgerufen wird.
Sie müssen bcp_setcolfmt einmal für jede Eigenschaft jeder Spalte in der Benutzerdatei aufrufen.
Sie müssen nicht alle Daten in einer Benutzerdatei in die SQL Server-Tabelle kopieren. Um eine Spalte zu überspringen, geben Sie das Format der Daten für die Spalte an, und legen Sie den BCP_FMT_SERVER_COL Parameter auf 0 fest. Wenn Sie eine Spalte überspringen möchten, müssen Sie dessen Typ angeben.
Die bcp_writefmt-Funktion kann verwendet werden, um die Formatspezifikation beizubehalten.
bcp_setcolfmt Unterstützung für erweiterte Datums- und Uhrzeitfeatures
Die Typen, die mit der BCP_FMT_TYPE-Eigenschaft für Datums-/Uhrzeittypen verwendet werden, werden in " Massenkopieänderungen" für erweiterte Datums- und Uhrzeittypen (OLE DB und ODBC) angegeben.
Weitere Informationen finden Sie unter "Datums- und Uhrzeitverbesserungen (ODBC)".