Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Funkcja bcp_setcolfmt zastępuje bcp_colfmt. Przy określaniu zestawienia kolumn należy użyć funkcji bcp_setcolfmt . bcp_setbulkmode może być używany do określenia więcej niż jednego formatu kolumn.
Funkcja ta zapewnia elastyczne podejście do określania formatu kolumn w operacji kopiowania masowego. Służy do ustawiania indywidualnych atrybutów formatu kolumn. Każde wywołanie do bcp_setcolfmt ustala atrybut jednego formatu kolumny.
Funkcja bcp_setcolfmt określa źródłowy lub docelowy format danych w pliku użytkownika. Gdy jest używany jako format źródłowy, bcp_setcolfmt określa format istniejącego pliku danych używanego jako źródło danych w kopii masowej do tabeli w SQL Server. Gdy jest używany jako format docelowy, plik danych jest tworzony w formatach kolumn określonych bcp_setcolfmt.
Syntax
RETCODE bcp_setcolfmt (
HDBC hdbc,
INT field,
INT property,
void* pValue,
INT cbValue);
Arguments
hdbc
Czy obsługa połączenia ODBC z obsługą kopiowania zbiorczego.
pole
To liczba kolumn porządkowych, dla której właściwość jest ustawiana.
właściwość
Jest jedną ze stałych właściwości. W tej tabeli zdefiniowano stałe własności.
| Property | Value | Description |
|---|---|---|
| BCP_FMT_TYPE | BYTE | Jest typem danych tej kolumny w pliku użytkownika. Jeśli różni się od typu danych odpowiadającej kolumny w tabeli bazy danych, kopia masowa konwertuje dane, jeśli to możliwe. Parametr BCP_FMT_TYPE jest wyliczany przez tokeny SQL Server typów danych w sqlncli.h, a nie przez wyliczacze typów danych ODBC C. Na przykład możesz określić ciąg znaków, typ ODBC SQL_C_CHAR, używając typu SQLCHARACTER specyficznego dla SQL Server. Aby określić domyślną reprezentację danych dla typu danych SQL Server, ustaw ten parametr na 0. Dla kopii masowej z SQL Server do pliku, gdy BCP_FMT_TYPE jest SQLDECIMAL lub SQLNUMERIC, jeśli kolumna źródłowa nie jest dziesiętna ani numeryczna, stosuje się domyślną precyzję i skalę. W przeciwnym razie, jeśli kolumna źródłowa jest dziesiętna lub liczbowa, stosuje się precyzję i skalę kolumny źródłowej. |
| BCP_FMT_INDICATOR_LEN | INT | To długość wskaźnika (prefiks) w bajtach. Jest to długość w bajtach wskaźnika długości/zerowego w danych kolumnowych. Prawidłowe wartości długości wskaźnika to 0 (przy użyciu bez wskaźnika), 1, 2 lub 4. Aby określić domyślne zużycie w wskaźniku kopiowania masowego, ustaw ten parametr na SQL_VARLEN_DATA. Wskaźniki pojawiają się w pamięci bezpośrednio przed danymi oraz w pliku danych bezpośrednio przed danymi, do których się odnoszą. Jeśli używa się więcej niż jednego sposobu określania długości kolumny pliku danych (np. wskaźnika i maksymalnej długości kolumny lub wskaźnika i sekwencji terminatora), kopia masowa wybiera taki, który skutkuje najmniejszą kopią danych. Pliki danych generowane przez kopiowanie masowe, gdy żadna interwencja użytkownika nie zmienia formatu danych, zawierają wskaźniki, gdy dane kolumny mogą się różnić długością lub gdy kolumna może przyjmować wartość NULL. |
| BCP_FMT_DATA_LEN | DBINT | Jest długością danych w bajtach (długość kolumny) Jest to maksymalna długość danych tej kolumny w bajtach w pliku użytkownika, nie licząc długości żadnego wskaźnika długości ani terminatora. Ustawienie BCP_FMT_DATA_LEN na SQL_NULL_DATA oznacza, że wszystkie wartości w kolumnie pliku danych są lub powinny być ustawione na NULL. Ustawienie BCP_FMT_DATA_LEN na SQL_VARLEN_DATA oznacza, że system powinien określać długość danych w każdej kolumnie. W przypadku niektórych kolumn może to oznaczać, że wskaźnik długości/zera jest generowany poprzedzając dane w kopii z SQL Server lub że wskaźnik ten jest oczekiwany w danych skopiowanych do SQL Server. Dla SQL Server typów znaków i binarnych BCP_FMT_DATA_LEN może być SQL_VARLEN_DATA, SQL_NULL_DATA, 0 lub jakaś dodatnia wartość. Jeśli BCP_FMT_DATA_LEN jest SQL_VARLEN_DATA, system używa albo wskaźnika długości, jeśli jest obecny, albo sekwencji terminatora do określenia długości danych. Jeśli dostarczone są zarówno wskaźnik długości, jak i sekwencja terminatora, kopia masowa wykorzystuje taką, która skutkuje najmniejszą kopią danych. Jeśli BCP_FMT_DATA_LEN jest SQL_VARLEN_DATA, typ danych jest znakiem SQL Server lub typem binarnym, a nie podano ani wskaźnika długości, ani sekwencji terminatora, system zwraca komunikat o błędzie. Jeśli BCP_FMT_DATA_LEN wynosi 0 lub wartość dodatnia, system używa BCP_FMT_DATA_LEN jako maksymalnej długości danych. Jednak jeśli oprócz dodatniej BCP_FMT_DATA_LEN dostępny jest wskaźnik długości lub sekwencja terminatora, system określa długość danych metodą skutkującą najmniejszą kopią danych. Wartość BCP_FMT_DATA_LEN oznacza liczbę bajtów danych. Jeśli dane znaków są reprezentowane przez znaki ogólnokształtne Unicode, to dodatnia wartość parametru BCP_FMT_DATA_LEN oznacza liczbę znaków pomnożoną przez rozmiar każdego znaku w bajtach. |
| BCP_FMT_TERMINATOR | LPCBYTE | Wskaźnik do sekwencji terminatora (w zależności od ANSI lub Unicode), który ma być użyty dla tej kolumny. Ten parametr jest przydatny głównie dla typów danych znaków, ponieważ wszystkie inne typy mają stałą długość lub, w przypadku danych binarnych, wymagają wskaźnika długości, aby dokładnie zarejestrować liczbę obecnych bajtów. Aby uniknąć zakończenia wyodrębnionych danych lub zaznaczyć, że dane w pliku użytkownika nie zostały zakończone, ustaw ten parametr na NULL. Jeśli używa się więcej niż jednego sposobu określania długości kolumny pliku użytkownika (np. terminator i wskaźnik długości, lub terminator i maksymalna długość kolumny), kopia masowa wybiera taki, który skutkuje najmniejszą kopią danych. API kopiowania masowego wykonuje konwersję znaków Unicode na MBCS w razie potrzeby. Należy zadbać o to, aby zarówno ciąg bajtów terminatora, jak i długość tego ciągu były prawidłowo ustawione. |
| BCP_FMT_SERVER_COL | INT | Pozycja porządkowa kolumny w bazie danych |
| BCP_FMT_COLLATION | LPCSTR | Nazwa sortowania. |
pValue (Wartość docelowa)
Jest wskaźnikiem wartości przypisanej do własności. Pozwala na indywidualne ustawienie każdej własności formatu kolumn.
cbvalue
To długość bufora właściwości w bajtach.
Zwroty
POWODZENIE lub NIEPOWODZENIE.
Remarks
Funkcja ta zastępuje funkcję bcp_colfmt . Cała funkcjonalność bcp_colfmt jest zapewniona w bcp_setcolfmt funkcji. Ponadto zapewnione jest wsparcie dla kolacji kolumnowej. Zaleca się, aby następujące atrybuty formatu kolumn były ustawiane w kolejności podanej poniżej:
BCP_FMT_SERVER_COL
BCP_FMT_DATA_LEN
BCP_FMT_TYPE
Funkcja bcp_setcolfmt pozwala określić format pliku użytkownika dla kopii masowych. Dla kopii masowej format zawiera następujące części:
Mapowanie z kolumn pliku użytkownika na kolumny bazy danych.
Typ danych każdej kolumny pliku użytkownika.
Długość opcjonalnego wskaźnika dla każdej kolumny.
Maksymalna długość danych na kolumnę pliku użytkownika.
Opcjonalna sekwencja bajtów kończących dla każdej kolumny.
Długość opcjonalnej sekwencji bajtów kończących.
Każde wywołanie do bcp_setcolfmt określa format dla jednej kolumny pliku użytkownika. Na przykład, aby zmienić domyślne ustawienia dla trzech kolumn w pięciokolumnowym pliku danych użytkownika, najpierw wywołaj bcp_columns(5), a następnie bcp_setcolfmt pięć razy, z czego trzy z tych wywołań ustawiasz własny format. Dla pozostałych dwóch wywołań ustaw BCP_FMT_TYPE na 0, a BCP_FMT_INDICATOR_LENGTH, BCP_FMT_DATA_LEN i cbValue odpowiednio na 0, SQL_VARLEN_DATA i 0. Ta procedura kopiuje wszystkie pięć kolumn, trzy z dostosowanym formatem i dwie z domyślnym formatem.
Funkcja bcp_columns musi zostać wywołana przed wywołaniem bcp_setcolfmt.
Musisz wywołać bcp_setcolfmt raz dla każdej właściwości każdej kolumny w pliku użytkownika.
Nie musisz kopiować wszystkich danych w pliku użytkownika do tabeli SQL Server. Aby pominąć kolumnę, określ format danych dla tej kolumny, ustawiając parametr BCP_FMT_SERVER_COL na 0. Jeśli chcesz pominąć kolumnę, musisz określić jej typ.
Funkcja bcp_writefmt może być użyta do utrzymywania specyfikacji formatu.
bcp_setcolfmt Wsparcie dla ulepszonych funkcji daty i godziny
Typy używane z właściwością BCP_FMT_TYPE dla typów dat/godziny są określone w Bulk Copy Changes for Enhanced Date and Time Types (OLE DB i ODBC).
Aby uzyskać więcej informacji, zobacz ulepszenia daty i godziny (ODBC).