Narzędzie bcp służy do masowego kopiowania danych pomiędzy wystąpieniem serwera Microsoft SQL Server a plikiem danych o formacie określonym przez użytkownika. Narzędzie to może być użyte do importu dużej liczby nowych wierszy do tabel serwera SQL, lub eksportu tabel do plików danych. [jaka jest liczba mnoga od „tabela”?] Z wyjątkiem użycia opcji queryout, narzędzie to nie wymaga żadnej znajomości języka Transact-SQL. Aby zaimportować dane do tabeli, konieczne jest użycie stworzonego dla niej pliku formatu, lub też zrozumienie struktury tejże tabeli oraz typów danych odpowiednich dla jej kolumn.
A tak to wygląda w praktyce.
Aby obsłużyć wynik działania narzędzia BCP należy wygenerować dwa pliki, jeden z danymi i jeden z opisem formatu danych.
Generujemy plik z danymi:
C:\Temp>bcp "SELECT * FROM DynamicsAX.DBO.CUSTTABLE WHERE DATAAREAID = 'CEU'" queryout CUSTTABLE.DAT -T -S OPTSBR2 -w -k -t#F# -r#R#Powstanie nam plik C:\Temp\CUSTTABLE.DAT który będzie zawierał odbiorców z firmy CEU.
Parametry -t oraz -r określają ciągi które będą rozdzielały pola oraz rekordy w pliku wynikowym (analogicznie jak metody outFieldDelimiter oraz outRecordDelimiter w AX).
Generujemy plik z definicją formatu danych :
C:\Temp>bcp DynamicsAX.dbo.CUSTTABLE format nul -T -S OPTSBR2 -f CUSTTABLE.FMT -w -k -t#F# -r#R#Powstanie nam plik C:\Temp\CUSTTABLE.FMT który będzie zawierał definicję tabeli CUSTTABLE.
Parametry -T -S OPTSBR2 określają połączenie do serwera SQL i powinny być zmienione przed uruchomieniem obu zapytań.
Aby odczytać zawartość wyeksportowanych plików z poziomu TSQL można posłużyć się zapytaniem:
SELECT * FROM OPENROWSET(BULK 'C:\TEMP\CUSTTABLE.DAT', FORMATFILE='C:\TEMP\CUSTTABLE.FMT') XWięcej informacji na stronie Narzędzie bcp (SQL Server 2008 R2).