Importowanie danych luzem za pomocą ZBIORCZYM WSTAWIANIEM lub OPENROWSET(BULK...)
This topic provides an overview of how to use the Transact-SQL BULK INSERT statement and the INSERT...SELECT * FROM OPENROWSET(BULK...) statement to bulk import data from a data file into a Microsoft SQL Server table.W tym temacie opisano zagadnienia dotyczące zabezpieczeń przy użyciu WSTAW luzem i OPENROWSET(BULK…) i korzystania z tych metod, aby import zbiorczy źródło dane zdalne.
Ostrzeżenie
Podczas korzystania z WSTAW luzem lub OPENROWSET(BULK…), jest zrozumieć jak SQL Server 2005 i nowsze wersje obsługują personifikacji.Aby uzyskać więcej informacji zobacz "Zagadnienia dotyczące zabezpieczeń", w dalszej części tego tematu.
Instrukcję luzem
WSTAW luzem powoduje załadowanie danych z pliku danych do tabela.Ta funkcja jest podobny do dostarczonych przez w z opcją bcp polecenia; jednak plik danych jest odczytywany przez SQL Server procesu.Opis składni WSTAW luzem, zobacz BULK INSERT (Transact-SQL).
Przykłady
Aby WSTAWIĆ luzem przykłady zobacz:
Przykłady luzem, importowanie i eksportowanie dokumentów XML
Przechowywanie wartości tożsamości podczas zbiorczego, importowanie danych
Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego
Do importowania lub eksportowania danych przy użyciu formatu znaków
Do importowania lub eksportowania danych przy użyciu formatu macierzystego
Do importowania lub eksportowania danych przy użyciu formatu znaków Unicode
Przy użyciu formatu Unicode macierzystego do importowania lub eksportowania danych
Przy użyciu formatu pliku do mapowania pól z pliku danych kolumny tabeli
OPENROWSET(BULK…) Funkcja
OPENROWSET dostawca zbiorczych zestawów zestaw wierszy jest dostępny przez wywołanie funkcja OPENROWSET i określenie opcji luzem.Funkcja OPENROWSET(BULK…) umożliwia dostęp do dane zdalne przez połączenie z dane zdalne źródło, takiego jak plik danych, za pośrednictwem dostawca OLE DB.
Aby import zbiorczy danych, wywołanie OPENROWSET(BULK…) z SELECT...Z klauzula w instrukcja INSERT.Jest podstawowa składnia luzem importowania danych:
WSTAW...WYBIERZ * Z OPENROWSET(BULK...)
OPENROWSET(BULK...) w instrukcja INSERT obsługuje podpowiedzi do tabela.Oprócz wskazówki regularnych tabela, takich jak TABLOCK klauzula luzem może zaakceptować następujące wskazówki specjalistyczne tabela: IGNORE_CONSTRAINTS (ignoruje ograniczenia CHECK), IGNORE_TRIGGERS, KEEPDEFAULTS i KEEPIDENTITY.Aby uzyskać więcej informacji, zobacz Wskazówki tabel (Transact-SQL).
Informacje dodatkowe zastosowania opcji luzem, zobacz OPENROWSET (Transact-SQL).
Przykłady
Przykłady INSERT...Wybierz * sprawozdań Z OPENROWSET(BULK...), zobacz następujące tematy:
Przykłady luzem, importowanie i eksportowanie dokumentów XML
Przechowywanie wartości tożsamości podczas zbiorczego, importowanie danych
Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego
Do importowania lub eksportowania danych przy użyciu formatu znaków
Przy użyciu formatu pliku do mapowania pól z pliku danych kolumny tabeli
Zagadnienia dotyczące zabezpieczeń
Jeśli użytkownik korzysta z SQL Server logowania, profilu zabezpieczeń SQL Server jest używane konto procesu.Natomiast jeśli SQL Server użytkownik loguje się przy użyciu uwierzytelniania systemu Windows, użytkownik może odczytywać tylko te pliki, które mogą być udostępniane przez konto użytkownika, niezależnie od profilu zabezpieczeń SQL Server procesu.
Rozważmy na przykład użytkownik zalogowany do wystąpienie SQL Server za pomocą uwierzytelniania systemu Windows.Użytkownika można używać do importowania danych z pliku danych do WSTAWIANIA luzem lub OPENROWSET SQL Server tabela konta użytkownika wymaga dostępu do odczytu do pliku danych.Dostęp do pliku danych, użytkownik umożliwia importowanie danych z pliku tabela nawet jeśli SQL Server proces nie ma uprawnień do dostępu do pliku.Użytkownik nie ma udzielić uprawnienia dostępu do plików do SQL Server procesu.
SQL Serveri Microsoft systemu Windows można skonfigurować do włączania wystąpienie SQL Server połączyć się z inną instancję SQL Server przez przekazywanie poświadczenia uwierzytelnionego użytkownika systemu Windows.Niniejsze Porozumienie jest znany jako personifikacji lub delegacji.Opis sposobu SQL Server 2005 i nowsze wersje uchwyt zabezpieczeń personifikacji użytkownika jest ważne, WSTAW luzem lub OPENROWSET.Personifikacja użytkownika umożliwia pliku danych znajdują się na innym komputerze niż SQL Server proces lub użytkownika.Na przykład, jeśli użytkownik na Computer_A ma dostęp do pliku danych w Computer_B, i zostało delegowanie poświadczenia zestaw odpowiednio, użytkownik może połączyć się z wystąpienie SQL Server , na którym jest uruchomiony Computer_C, dostęp do pliku danych na Computer_Bi luzem, importować dane z tego pliku do tabela na Computer_C.Aby uzyskać więcej informacji, zobacz Opis personifikacji.
Ostrzeżenie
The way in which SQL Server 2005 and later versions control access to files addresses a security issue that was present in Microsoft SQL Server 2000 and earlier versions.Wcześniej, po użytkownik został uwierzytelniony, dostęp do zewnętrznych plików było oparte na profilu zabezpieczeń SQL Server procesu.Gdy SQL Server proces miał dostęp do odczytu do pliku dla użytkownika, który nie ma dostępu do pliku, ale został element członkowski z bulkadmin stałej roli serwera, użytkownik może zaimportować plik za pomocą WSTAWIĆ luzem i dostępu do zawartości pliku.
Importowanie zbiorczego ze zdalnym pliku danych
Aby użyć luzem, WSTAW lub WSTAW...Wybierz * od OPENROWSET(BULK...) do import zbiorczy danych z innego komputera, plik danych musi być udostępniony między dwoma komputerami.Plików udostępnionych danych, użyć jego universal konwencja nazewnictwa nazwy (UNC), która ma postać ogólne, **\nazwa_serwera\nazwa_udziału\ścieżkę\**nazwę pliku.Ponadto konto używane do uzyskania dostępu do pliku danych musi mieć uprawnienia, które są wymagane do odczytywania pliku na dysku zdalnego.
Na przykład, następujący BULK INSERT luzem instrukcja importuje dane do SalesOrderDetail tabela AdventureWorks2008R2 bazy danych z pliku danych o nazwie newdata.txt.Ten plik danych znajduje się w folderze udostępnionym o nazwie \dailyorders w udziale sieciowym katalogu o nazwie salesforce w systemie o nazwie computer2.
BULK INSERT AdventureWorks2008R2.Sales.SalesOrderDetail
FROM '\\computer2\salesforce\dailyorders\neworders.txt';
GO
Ostrzeżenie
Ograniczenie to nie ma zastosowania do bcp utility, ponieważ klient odczytuje plik niezależnie od SQL Server.
Zobacz także