目录
1.查看bcp是否可用
2.bcp 命令的基本语法
3.数据导出
4.数据导入
bcp
(Bulk Copy Program)是 SQL Server 提供的一个命令行工具,用于在 SQL Server 实例与用户指定格式的数据文件之间批量复制表或视图数据。bcp
工具非常适合进行大量数据的导入导出操作,因为它可以绕过 SQL Server 的解析器和查询优化器,直接将数据写入或读取到物理文件中,从而提高数据传输效率。
1.查看bcp是否可用
如果bcp工具已经安装并且在PATH环境变量中设置了正确的路径,它会显示bcp可执行文件的完整路径。
where bcp (Windows)
which bcp (Linux/Unix)
2.bcp
命令的基本语法
bcp {dbtable | query} {in | out | queryout | format} datafile
[-c|-n|-w|-N|-f format_file]
[-e err_file]
[-F first_row]
[-L last_row]
[-b batch_size]
[-t field_term]
[-r row_term]
[-i input_file]
[-o output_file]
[-a packet_size]
[-S server_name[\instance_name]]
[-U user_name]
[-P password]
[-T]
[-v version]
[-R regional_options]
[-k]
[-E]
[-V (60|65|70|80|90|100|110|120)]
[-q]
[-C code_page_specifier]
[-collation collation_name]
主要参数说明
- {dbtable | query}:指定数据库中的表名或者一个SQL查询。
- {in | out | queryout | format}:指定操作类型。
in
:从数据文件向表中导入数据。out
:从表中导出数据到数据文件。queryout
:执行SQL查询并将结果输出到数据文件。format
:生成或使用格式文件来定义数据格式。
- datafile:指定数据文件的路径。
- -c:以字符形式存储所有列。
- -n:以本机格式存储所有列。
- -w:以Unicode字符形式存储所有列。
- -N:以本机格式存储所有数值型列,并以字符形式存储其他列。
- -f format_file:指定一个格式文件,该文件描述了如何解释数据文件中的数据。
- -e err_file:指定错误日志文件。
- -F first_row:指定要开始处理的第一行。
- -L last_row:指定要处理的最后一行。
- -b batch_size:指定每次提交给服务器的行数。
- -t field_term:指定字段之间的分隔符,默认为制表符 (
\t
)。 - -r row_term:指定行之间的分隔符,默认为换行符 (
\n
)。 - -i input_file:指定输入文件,包含用于导入的SQL语句。
- -o output_file:指定输出文件,用于存放命令执行后的消息。
- -a packet_size:指定网络数据包大小。
- -S server_name[\instance_name]:指定服务器实例。
- -U user_name 和 -P password:指定登录凭据。
- -T:使用可信连接(Windows身份验证)。
- -v version:指定SQL Server版本。
- -R regional_options:设置区域选项。
- -k:保留空格。
- -E:使用代码页转换。
- -V (60|65|70|80|90|100|110|120):指定兼容性级别。
- -q:启用引用标识符。
- -C code_page_specifier:指定数据文件使用的代码页。
- -collation collation_name:指定排序规则。
3.数据导出
bcp db_task.dbo.task_info out C:\data.csv -T -c -t, -S localhost
bcp db_task.dbo.task_info out C:\datac.csv -T -c -t! -S localhost
bcp db_task.dbo.task_info out C:\datac.csv -U sa -P 20t@?_23 -c -t! -S 10.18.168.200
-T 参数表示使用信任连接(Windows身份验证)
-c 表示字符模式(适用于非Unicode字符数据)
-t 后代表分隔符,分隔符最好是特殊符号,不要与数据库中属性值有重复
-S 指定服务器名称及实例名
out 和 in 分别指示是导出还是导入操作
-U 用户名 -P 密码
导出示例:
4.数据导入
bcp db_task.dbo.task_info in C:\data.csv -T -c -t, -S localhost -b 2000
bcp db_task.dbo.task_info in C:\datac.csv -T -c -t! -S localhost -b 2000
-b 2000 指定了每批导入2000行数据后提交一次事务。
bcp
工具非常强大,适用于需要高效处理大量数据的情况。通过合理配置参数,你可以灵活地控制数据的导入导出过程。