sql-server【bcp工具】

目录

1.查看bcp是否可用

[2.bcp 命令的基本语法](#2.bcp 命令的基本语法)

3.数据导出

4.数据导入


bcp(Bulk Copy Program)是 SQL Server 提供的一个命令行工具,用于在 SQL Server 实例与用户指定格式的数据文件之间批量复制表或视图数据。bcp 工具非常适合进行大量数据的导入导出操作,因为它可以绕过 SQL Server 的解析器和查询优化器,直接将数据写入或读取到物理文件中,从而提高数据传输效率。

1.查看bcp是否可用

如果bcp工具已经安装并且在PATH环境变量中设置了正确的路径,它会显示bcp可执行文件的完整路径。

sql 复制代码
where bcp   (Windows)
which bcp   (Linux/Unix)

2.bcp 命令的基本语法

sql 复制代码
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.数据导出

sql 复制代码
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.数据导入

sql 复制代码
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 工具非常强大,适用于需要高效处理大量数据的情况。通过合理配置参数,你可以灵活地控制数据的导入导出过程。

相关推荐
play_big_knife5 分钟前
鸿蒙项目云捐助第二十八讲云捐助项目首页组件云数据库加载轮播图
数据库·华为·harmonyos·鸿蒙·云开发·鸿蒙开发·鸿蒙技术
qq_321665331 小时前
mysql 数据库迁移到达梦数据库
数据库·mysql
Hello.Reader2 小时前
Redis大Key问题全解析
数据库·redis·bootstrap
靖顺4 小时前
【OceanBase 诊断调优】—— packet fly cost too much time 的根因分析
数据库·oceanbase
liuxin334455664 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
天冬忘忧5 小时前
Flink优化----FlinkSQL 调优
大数据·sql·flink
yuanbenshidiaos7 小时前
C++--------------树
java·数据库·c++
dengjiayue8 小时前
MySQL 查询大偏移量(LIMIT)问题分析
数据库·mysql
言之。8 小时前
【MySQL】在MySQL中如何定位慢查询?
数据库·mysql
DashVector9 小时前
如何通过HTTP API插入Doc
数据库·人工智能·http·阿里云·向量检索