Загрузка базы данных
Загрузка данных с помощью параметра -f (format)
В нашем первом примере раздела "Использование BCP" мы создали форматный файл с именем data.fmt. Вместо ввода вручную всех параметров форматирования, таких как storage type (тип хранения), prefix length (длина префикса), field length (длина поля) и field terminator (разделитель полей), вы можете использовать форматный файл. Для вызова этого файла используется параметр -f (format), как это показано ниже:
bcp Northwind.dbo.Customers in data2.file -e err.fil -f data.fmt -L 5 -Usa
В предположении, что вы ввели пароль sa и создали data2.file, сеанс будет иметь следующую форму:
Starting copy... 5 rows copied. Network packet size (bytes): 4096 Clock Time (ms.): total 50 Avg 10 (100.00 rows per sec.)
В дополнение к параметру -f в данном примере включен параметр -L. Этот параметр указывает последнюю строку для копирования из входного файла. В данном примере последней обрабатываемой строкой была пятая строка. В результате здесь не появится сообщение об ошибке EOF (конец файла), которое мы видели в предыдущем примере.
Извлечение данных путем интерактивного использования BCP
Использование BCP в интерактивном режиме для копирования данных из базы данных проще, чем использование BCP для копирования в базу данных, поскольку при извлечении данных BCP самостоятельно заполняет для вас параметры длины полей. Мы используем следующую команду для интерактивного копирования данных из таблицы Customers базы данных Northwind:
bcp Northwind.dbo.Customers out dataout.dat -e err.fil -U sa
После ввода этой команды и пароля sa начнется выполнение сеанса. (Ввод пользователя показан полужирным шрифтом.)
Enter the file storage type of field CustomerID [nchar]: char Enter prefix-length of field CustomerID [1]: 0 Enter length of field CustomerID [26]: Enter field terminator [none]: , Enter the file storage type of field CompanyName [nvarchar]: char Enter prefix-length of field CompanyName [1]: 0 Enter length of field CompanyName [189]: Enter field terminator [none]: , Enter the file storage type of field ContactName [nvarchar]: char Enter prefix-length of field ContactName [1]: 0 Enter length of field ContactName [143]: Enter field terminator [none]: , Enter the file storage type of field ContactTitle [nvarchar]: char Enter prefix-length of field ContactTitle [1]: 0 Enter length of field ContactTitle [143]: Enter field terminator [none]: , Enter the file storage type of field Address [nvarchar]: char Enter prefix-length of field Address [1]: 0 Enter length of field Address [283]: Enter field terminator [none]: , Enter the file storage type of field City [nvarchar]: char Enter prefix-length of field City [1]: 0 Enter length of field City [73]: Enter field terminator [none]: , Enter the file storage type of field Region [nvarchar]: char Enter prefix-length of field Region [1]: 0 Enter length of field Region [73]: Enter field terminator [none]: , Enter the file storage type of field PostalCode [nvarchar]: char Enter prefix-length of field PostalCode [1]: 0 Enter length of field PostalCode [49]: Enter field terminator [none]: , Enter the file storage type of field Country [nvarchar]: char Enter prefix-length of field Country [1]: 0 Enter length of field Country [73]: Enter field terminator [none]: , Enter the file storage type of field Phone [nvarchar]: char Enter prefix-length of field Phone [1]: 0 Enter length of field Phone [115]: Enter field terminator [none]: , Enter the file storage type of field Fax [nvarchar]: char Enter prefix-length of field Fax [1]: 0 Enter length of field Fax [115]: Enter field terminator [none]: , Do you want to save this format information in a file? [Y/n]: n Host filename [bcp.fmt]: Starting copy... 96 rows copied. Network packet size (bytes): 4096 Clock Time (ms.): total 10 Avg 0 (9600.00 rows per sec.)
В этом интерактивном сеансе BCP создается файл с разделителями – символами табуляции (напомним, что символ табуляции является разделителем по умолчанию); этот файл можно просматривать с помощью Notepad. Это текстовый файл, и все его данные являются данными символьного типа. К сожалению, BCP не добавляет символ новой строки в конце каждой строки. Тем самым при просмотре файл с помощью Notepad вы увидите одну очень длинную строку данных.
Извлечение данных с помощью BCP с параметрами командной строки
Чтобы создать более удобный для чтения файл данных, в котором данные разделены символом табуляции, а каждая строка заканчивается символом новой строки, используйте параметр -c, как это показано ниже:
bcp Northwind.dbo.Customers out dataout.dat -e err.fil -c -U sa
После ввода этой команды и пароля sa начнется выполнение сеанса, как показано ниже:
Starting copy... 96 rows copied. Network packet size (bytes): 4096 Clock Time (ms.): total 1 Avg 0 (96000.00 rows per sec.)
Извлечение данных с использованием параметра queryout
В нашем последнем примере для извлечения данных используется параметр queryout. Это параметр позволяет вам задавать запрос при копировании данных из базы данных SQL Server. С помощью этого запроса происходит выбор определенных данных и копирование только этих данных. Параметр queryout достаточно прост для использования – просто не забывайте указывать запрос в кавычках, как это показано ниже:
bcp "SELECT CustomerID, CompanyName FROM Northwind..Customers" queryout dataout.dat -e err.fil -c -U sa Как обычно, введите пароль sa; сеанс будет показан в следующей форме: Starting copy... 96 rows copied. Network packet size (bytes): 4096 Clock Time (ms.): total 1 Avg 0 (96000.00 rows per sec.)
Результатом этого запроса будет файл данных с разделителями в виде символов табуляции и признаками конца строк; этот файл состоит из двух колонок: CustomerID и CompanyName. Это способ полезно использовать, если вы хотите извлечь только определенные колонки или строки базы данных.