Азбука BCP
Страница 2. Основы BCP


Основы BCP

Запуск утилит из командной строки Windows NT всё реже используется современными DBA. Для Windows 2000/NT ярлык командной строки "Command Prompt" доступен через меню Start. Если в командной строке набрать: "BCP -h" будет представлен листинг общего синтаксиса использования утилиты:

C:\>bcp -h
usage: bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-V file format version] [-q quoted identifier]
[-C code page specifier] [-t field terminator] [-r row terminator]
[-i inputfile] [-o outfile] [-a packetsize]
[-S server name] [-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"]

C:\>

Листинг показывает пару дюжин параметров, из которых нужно знать только несколько, чтобы усвоить советы, которые представляет автор статьи. Имейте в виду, что параметры командной строки зависят от регистра, так что, например, -n не означает то же самое, что -N. Вообще, синтаксис командной строки определяет следующая строка:

BCP {dbtable} {in | out | queryout | format} datafile options

Команда начинается с BCP, затем указывается полностью квалифицированное имя таблицы, обозначенное как dbtable. Полностью квалифицированное имя таблицы содержит имя базы данных, владельца table-object и имя table-object. Например, Northwind.dbo.Employees - это полностью квалифицированное имя таблицы. Вы должны указать направление: in или out. Если Вы используете BCP, чтобы копировать данные из файла в таблицу базы данных, используйте опцию in. Если Вы используете BCP, чтобы копировать данные из таблицы базы данных в файл, используйте опцию out. Синтаксис команды продолжает имя файла - datafile. Имя файла может быть абсолютным, например: C:\Temp\Northwind.dat, или это может быть относительное от текущей папки имя, например: ..\Northwind.dat. (две лидирующие точки указывают, что файл Northwind.dat расположен на одну папку выше в иерархии папок). Если Вы используете BCP с опцией out, создаётся новый файл с указанным именем, который автоматически перезаписывает любого файла с тем же самым именем, если он уже существует. После этого Вы можете разместить любые другие, необходимые параметры утилиты BCP.

Рассмотрим теперь использование некоторых важных параметров BCP. Вы можете использовать опцию -S, чтобы указать имя сервера (не обязательно указывать имя сервера, если Вы запускаете BCP на локальном компьютере SQL Server). Если необходимый экземпляр SQL Server не доступен по заданному по умолчанию протоколу, Вы должны прописать имя сервера как псевдоним для компьютера - клиента в SQL Server Client Network Utility. Для подключения к с серверу через его собственную систему аутентификации, необходимо указать имя пользователя и пароль, которые задаются через параметры -U и -P соответственно. При использовании доверительного подключения, указание через параметры имени пользователя и его пароля не требуется, нужно только указать опцию -T.

Для указания типа файла данных, используйте опцию -n, если файл данных, который Вы хотите копировать, имеет собственный формат SQL Server (native-формат), или опцию -c, если файл должен быть текстовым, имеющим в качестве разделителя табуляцию. Для того, что бы закрепить порядок использования параметров BCP, рассмотрим пример, в котором используется следующая информация о параметрах BCP, таблице базы данных и транзитного файла:

·Исходная таблица - Employees, владелец которой dbo. ·Таблица находится в базе данных Northwind. ·Файл экспорта - текстовый файл Northwind.txt имеющий в качестве разделителей табуляцию. ·Файл находится в текущей папке на сервере с именем HOMER, к которому Вы обращаетесь через учетную запись sa (которая без пароля).

Воспользовавшись представленными выше правилами, Вы получите следующий набор параметров для утилиты BCP:

BCP Northwind.dbo.Employees out Northwind.txt -c -S HOMER -U sa -P

Теперь, чтобы полностью изменить направление потока данных, давайте рассмотрим пример перемещения данных средствами BCP из файла в таблицу базы, и запишем команду, которая будет использовать следующую информацию:

·Исходный файл данных - файл типа native SQL Server, с именем Invoices.dat.
·Файл находится на сервере с именем BART, к которому Вы обращаетесь через доверительное подключение.
·Таблица назначения - Invoices, владелец которой Lisa.
·Таблица находится в базе данных Northwind.

В результате Вы должны получить следующую команду:


BCP Northwind.lisa.Invoices in Invoices.dat -n -S BART -T

Эти примеры демонстрируют наиболее типичное использование BCP. Вы можете перемещать большие таблицы или базы данных целиком используя представленные в примерах параметры. С помощью BCP можно выполнять и более сложные задачи, используя текстовые файлы фиксированной длинны или файлы с различными разделителями. Для получения дополнительной информации о параметрах BCP, см. BOL.

 
« Предыдущая статья   Следующая статья »