Zbiorcze kopiowanie z programu zmienne
Możesz kopiowanie masowe bezpośrednio z programu zmiennych.Po przydzielanie zmiennych do przechowywania danych dla wiersza i telefonicznej bcp_init do rozpoczęcia kopiowania zbiorczej, zadzwoń bcp_bind dla każdej kolumna określić lokalizację i format zmiennej program ma być skojarzony z kolumna.Wypełnij każdą ze zmiennych z danymi, a następnie wywołać bcp_sendrow wysłanie jednego wiersza danych na serwerze.Powtórz proces wypełniania zmiennych i wywoływanie bcp_sendrow aż wszystkie wiersze zostały wysłane do serwera, a następnie wywołać bcp_done , aby określić, że operacja została zakończona.
The bcp_bindpData parameter contains the address of the variable being bound to the column.Dla każdej kolumna danych mogą być przechowywane w jednym z dwóch sposobów:
Przydzielić jedną zmienną do przechowywania danych.
Przydzielić zmienną wskaźnik następuje natychmiast zmiennej danych.
Zmienną wskaźnika wskazuje długość danych dla kolumn o zmiennej długości, a także wskazuje wartości NULL, jeśli kolumna dozwolone wartości null.If only a data variable is used, then the address of this variable is stored in the bcp_bindpData parameter.If an indicator variable is used, the address of the indicator variable is stored in the bcp_bindpData parameter.The bulk copy functions calculate the location of the data variable by adding the bcp_bindcbIndicator and pData parameters.
bcp_bind obsługuje trzy metody postępowania z danych o zmiennej długości:
Użycie cbData ze zmienną danych.Umieszczanie danych w cbData.Each time the length of the data to be bulk copied changes, call bcp_collento reset cbData.Jeśli jest używany jeden z dwóch metod, należy określić SQL_VARLEN_DATA dla cbData.Jeśli wartości danych są dostarczane kolumna wartość NULL, określ SQL_NULL_DATA dla cbData.
Za pomocą zmiennych wskaźnika.W każdej nowej wartości danych zostanie przeniesiona do zmiennej danych, długość wartości są przechowywane w zmiennej wskaźnika.Jeśli jest używany jeden z dwóch metod, określ 0 dla cbIndicator.
Za pomocą wskaźników terminator.Load the bcp_bindpTerm parameter with the address of the bit pattern that terminates the data.Jeśli jest używany jeden z dwóch metod, należy określić wartość NULL dla pTerm.
Wszystkie trzy z tych metod może być używany na tym samym bcp_bind połączenia, w których jest używany przypadek specyfikacji, która powoduje najmniejszą ilość danych, w której są kopiowane.
The bcp_bindtype parameter uses DB-Library data type identifiers, not ODBC data type identifiers.Identyfikatory typu danych biblioteki DB są zdefiniowane w sqlncli.h do użytku z ODBC bcp_bind funkcja.
Funkcje kopiowanie masowe nie obsługują wszystkie typy danych ODBC C.Na przykład funkcje kopiowanie masowe nie obsługuje struktury SQL_C_TYPE_TIMESTAMP ODBC; tak za pomocą SQLBindCol or SQLGetData do konwertowania danych ODBC SQL_TYPE_TIMESTAMP do zmiennej SQL_C_CHAR.If you then use bcp_bind with a type parameter of SQLCHARACTER to bind the variable to a SQL Serverdatetime column, the bulk copy functions convert the timestamp escape clause in the character variable to the proper datetime format.
W poniższej tabela przedstawiono typy danych zalecany do używania w mapowaniu z typem danych ODBC SQL do SQL Server Typ danych.
Typ SQLdata ODBC |
Typ danych ODBC C |
bcp_bind Typ Parametr |
Typ danych programu SQL Server |
|---|---|---|---|
SQL_CHAR |
SQL_C_CHAR |
SQLCHARACTER |
znak Wskazuje inicjatora wątek. |
SQL_VARCHAR |
SQL_C_CHAR |
SQLCHARACTER |
varchar Zmiana znaku CHAR, zmiana nazwa_systemu |
SQL_LONGVARCHAR |
SQL_C_CHAR |
SQLCHARACTER |
tekst |
SQL_WCHAR |
SQL_C_WCHAR |
SQLNCHAR |
nchar |
SQL_WVARCHAR |
SQL_C_WCHAR |
SQLNVARCHAR |
nvarchar |
SQL_WLONGVARCHAR |
SQL_C_WCHAR |
SQLNTEXT |
ntext |
SQL_DECIMAL |
SQL_C_CHAR |
SQLCHARACTER |
decimal gru pieniądze smallmoney |
SQL_NUMERIC |
SQL_C_NUMERIC |
SQLNUMERICN |
numeric |
SQL_BIT |
SQL_C_BIT |
SQLBIT |
bit |
SQL_TINYINT (podpisane) |
SQL_C_SSHORT |
SQLINT2 |
smallint |
SQL_TINYINT (bez znaku) |
SQL_C_UTINYINT |
SQLINT1 |
tinyint |
SQL_SMALL_INT (podpisane) |
SQL_C_SSHORT |
SQLINT2 |
smallint |
SQL_SMALL_INT (bez znaku) |
SQL_C_SLONG |
SQLINT4 |
int Liczba całkowita |
SQL_INTEGER (podpisane) |
SQL_C_SLONG |
SQLINT4 |
int Liczba całkowita |
SQL_INTEGER (bez znaku) |
SQL_C_CHAR |
SQLCHARACTER |
decimal gru |
SQL_BIGINT (podpisane i niepodpisane) |
SQL_C_CHAR |
SQLCHARACTER |
bigint |
SQL_REAL |
SQL_C_FLOAT |
SQLFLT4 |
rzeczywiste |
SQL_FLOAT |
SQL_C_DOUBLE |
SQLFLT8 |
zmiennoprzecinkowe |
SQL_DOUBLE |
SQL_C_DOUBLE |
SQLFLT8 |
zmiennoprzecinkowe |
SQL_BINARY |
SQL_C_BINARY |
SQLBINARY |
plik binarny Sygnatura czasowa |
SQL_VARBINARY |
SQL_C_BINARY |
SQLBINARY |
varbinary zróżnicowanie binarne |
SQL_LONGVARBINARY |
SQL_C_BINARY |
SQLBINARY |
obraz |
SQL_TYPE_DATE |
SQL_C_CHAR |
SQLCHARACTER |
data_i_godzina Smalldatetime |
SQL_TYPE_TIME |
SQL_C_CHAR |
SQLCHARACTER |
data_i_godzina Smalldatetime |
SQL_TYPE_TIMESTAMP |
SQL_C_CHAR |
SQLCHARACTER |
data_i_godzina Smalldatetime |
SQL_GUID |
SQL_C_GUID |
SQLUNIQUEID |
Uniqueidentifier |
SQL_INTERVAL_ |
SQL_C_CHAR |
SQLCHARACTER |
Wskazuje inicjatora wątek. |
SQL Server nie zostały podpisane tinyint, bez znaku smallintlub bez znakuint typów danych.Aby zapobiec utracie danych podczas migracji tych typów danych, należy utworzyć SQL Server Tabela następnego największą liczbę całkowitą typu. Aby uniemożliwić użytkownikom dodawanie później wartości poza zakresem dozwolonych przez oryginalny typ danych, należy zastosować regułę do SQL Server kolumna, aby ograniczyć dopuszczalne wartości do zakres, obsługiwanych przez typ danych w oryginalnym źródle:
CREATE TABLE Sample_Ints(STinyIntCol SMALLINT,
USmallIntCol INT)
GO
CREATE RULE STinyInt_Rule
AS
@range >= -128 AND @range <= 127
GO
CREATE RULE USmallInt_Rule
AS
@range >= 0 AND @range <= 65535
GO
sp_bindrule STinyInt_Rule, 'Sample_Ints.STinyIntCol'
GO
sp_bindrule USmallInt_Rule, 'Sample_Ints.USmallIntCol'
GO
SQL Server nie są obsługiwane typy danych interwału bezpośrednio.Aplikacja może jednak przechowywać sekwencje escape interwał jako ciągi znaków w SQL Server Kolumna znaków. Aplikacja może odczytywać je do późniejszego użytku, ale nie można ich używać w Transact-SQL instrukcje.
Funkcje kopiowanie masowe mogą być używane do szybkiego załadować dane SQL Server które została przeczytana ze urządzenie źródłowe danych ODBC. Użycie SQLBindCol Aby powiązać kolumny zestaw do programu zmiennych wyników, a następnie użyj bcp_bind do powiązania tych samych zmiennych program zbiorczej operacji kopiowania.Wywołanie SQLFetchScroll lub SQLFetch następnie pobiera wiersz danych ze urządzenie źródłowe danych ODBC do zmiennych program, a wywołania bcp_sendrow Zbiorcza kopiuje dane w programie zmienne, które mają zostać SQL Server .
An application can use the bcp_colptr function anytime it needs to change the address of the data variable originally specified in the bcp_bind pData parameter.An application can use the bcp_collen function anytime it needs to change the data length originally specified in the bcp_bindcbData parameter.
Nie można odczytać danych z SQL Serverdo zmiennych programu przy użyciu kopiowanie masowe; Brak nie przypomina funkcja "bcp_readrow". Można wysyłać tylko dane z aplikacji na serwerze.