В этом руководстве вы узнаете, как использовать утилиту SQL Server BCP для массового копирования данных между экземпляром SQL Server и файлом.
Введение в утилиту SQL Server BCP
BCP означает Bulk Copy Program(программа массового копирования). BCP — это инструмент командной строки, который использует API программы массового копирования, позволяющий выполнять массовое копирование данных между экземпляром SQL Server и файлом.
В целом BCP позволяет:
- Массовый экспорт данных из таблицы в файл данных
- Массовый экспорт данных из запроса в файл данных
- Массовый импорт данных из файла данных в таблицу
- Генерация файлов формата
Чтобы запустить программу BCP, откройте командную строку и используйте команду bcp.
bcp
Следующая команда показывает версию bcp:
bcp -v
В этой команде -v обозначает версию.
Чтобы просмотреть все параметры bcp, используйте следующую команду:
bcp ?
Выход:
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][-G Azure Active Directory Authentication] [-h "load hints"] [-x generate xml format file] [-d database name] [-K application intent] [-l login timeout]
Команда bcp имеет много опций. И в этом руководстве мы рассмотрим только наиболее часто используемые из них.
Использование SQL Server bcp для экспорта данных из таблицы в файл
Чтобы экспортировать данные из таблицы в плоский файл, используйте следующую команду:
bcp database_name.schema_name.table_name out "path_to_file" -c -U user_name -P password
В этом синтаксисе:
- bcp — это команда
- database_name.schema_name.table_name — имя таблицы, в которую вы хотите экспортировать данные
- «path_to_file» — путь к файлу результата.
- Параметр -c использует тип символа для формата
- -U user_name указывает пользователя, который подключается к базе данных. Этот пользователь должен иметь разрешение SELECT на таблицу, которую вы хотите экспортировать.
- -P пароль указывает пароль пользователя.
Если вы хотите, чтобы программа bcp подключалась к SQL Server с помощью доверенного соединения, используя встроенную безопасность, вы можете использовать параметр -T вместо указания имени пользователя и пароля:
bcp database_name.schema_name.table_name out "path_to_file" -c -T
Например, следующая команда экспортирует данные таблицы «products» из производственной схемы образца базы данных bikestores в файл d:\data\products.txt:
bcp kikestores.production.products out "d:\data\products.txt" -c -U [username] -P [password]
Выход:
Starting copy... 321 rows copied. Network packet size(bytes): 4096 Clock Time(ms.) Total : 15 Average :(21400.00 rows per sec.)
Важно отметить, что для успешного выполнения команды папка с данными должна находиться на диске D:.
Использование SQL Server bcp для экспорта результата запроса в файл
Чтобы экспортировать набор результатов запроса в файл, используйте следующую команду:
bcp "query" queryout "path_to_file" -w -U [username] -P [password]
В этой команде вы указываете запрос внутри двойных кавычек, за которым следует bcp и используется опция queryout.
Например, следующая команда экспортирует данные из запроса, который выбирает название продукта и цену по прейскуранту из таблицы production.products в файл:
bcp "select product_name, list_price from bikestores.production.products where model_year=2017" queryout "d:\data\products.txt" -w -U sa -P Abcd1234
Выход:
Starting copy... 85 rows copied. Network packet size(bytes): 4096 Clock Time(ms.) Total : 16 Average :(5312.50 rows per sec.)
Использование SQL Server bcp для импорта данных в таблицу из файла
Сначала создайте новую базу данных HR с таблицей людей:
CREATE DATABASE hr; GO USE hr; CREATE TABLE people( id int IDENTITY PRIMARY KEY, first_name varchar(50) NOT NULL, last_name varchar(50) NOT NULL ); INSERT INTO people(first_name, last_name) VALUES('John', 'Doe'),('Jane', 'Doe'); SELECT * FROM people;
Во-вторых, экспортируйте данные из таблицы people в файл:
bcp hr.dbo.people OUT d:\data\people.bcp -T -c
Выход:
Starting copy... 2 rows copied. Network packet size(bytes): 4096 Clock Time(ms.) Total : 1 Average :(2000.00 rows per sec.)
В-третьих, усекаем таблицу people:
TRUNCATE TABLE people;
После этого импортируйте данные из d:\data\people.bcp в таблицу people:
bcp hr.dbo.people IN d:\data\people.bcp -T -c
Выход:
Starting copy... 2 rows copied. Network packet size(bytes): 4096 Clock Time(ms.) Total : 16 Average :(125.00 rows per sec.)
Наконец, проверьте импорт, выбрав данные из таблицы людей:
SELECT * FROM people;
Выход:
Краткое содержание
- SQL Server BCP — это программа массового копирования, которая позволяет выполнять массовое копирование данных между экземпляром SQL Server и файлом данных, используя указанный формат файла.