bcp+Sql语句抽取数据导出

  最近由于项目的需求,需要将项目数据库中的数据按照一定的规则抽取出来,然后再导入到另外一个结构相同的数据库中;之前也使用过bcp的功能,但是只使用bcp将整个表的数据导入到一个csv文件中,查看了一下bcp命令的参数,发现bcp命令后面可以加sql语句,然后带上-queryout参数,就可以按照自己的逻辑将数据抽取出来,然后导入到csv文件中了,但是在实际使用中还是遇到了不少的困难,经过多次尝试,最终还是得以完成了,也积累了如下几个小经验。
   一、bcp命令可以直接在Command窗口运行,你可以单击开始菜单-运行-cmd-进入Command窗口,然后输入你编写好的bcp语句
   二、可以调用系统存储过程master..xp_cmdshell来调用bcp命令
   三、如果需要使用master..xp_cmdshell存储过程,需要先打开sqlserver的xp_cmdshell功能,可以进入sqlserver外围配置管理器-功能配置管理器-选中xp_cmdshell-开启。也可以通过执行sql语句的方式打开xp_cmdshell功能,如下:
     USE master 
     EXEC sp_configure 'show advanced options', 1
     RECONFIGURE WITH OVERRIDE
     EXEC sp_configure 'xp_cmdshell', 1     --1,开启;0,关闭
     RECONFIGURE WITH OVERRIDE
       
   四、调用master..xp_cmdshell调用bcp时,整个bcp命令要放在单引号内作为master..xp_cmdshell存储过程的参数,如:
      exec master..xp_cmdshell 'bcp sql语句 -queryout d:\test.csv -Usa -Ppassword -S127.0.0.1 -c '
   五、sql语句中涉及的表名,必须用数据库.拥有者.表名的格式,如SchoolDataBase.dbo.School
      六、sql语句需要放在双引号内,而在实际应用时,单引号和双引号太多,而且嵌套,还是需要变化一下,采用字符串连接的方式,如:
       "exec master..xp_cmdshell 'bcp \""+sql语句+"\"  -queryout d:\test.csv -Usa -Ppassword -S127.0.0.1 -c'"
   七、sql语句不可以有回车换行符,这个是折腾我半天时间才发现的,没办法,只能再曲线救国,于是出现了如下的sql语句:
      "exec master..xp_cmdshell 'bcp \""+sql语句.Replace("\r\n"," ")+"\"  -queryout -Usa -Ppassword -S127.0.0.1 -c'"
 

  这样,将上面语句作为一条sql语句放在sqlCommand中进行执行即可。

    经过上述一番折腾,终于可以抽取数据导出了。
 

转载于:https://www.cnblogs.com/RascallySnake/archive/2010/11/17/1880287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 bcp 或 sqlcmd 导入数据,您需要遵循以下步骤: 1. 创建数据表:在 SQL Server 数据库中创建一个数据表,该表将用于存储导入的数据。 2. 准备数据文件:将要导入的数据保存到一个文本文件中,每行表示一条记录,字段值之间用分隔符分隔。 3. 确定分隔符:确定数据文件中用于分隔字段值的分隔符。 4. 使用 bcp 命令或 sqlcmd 命令导入数据:使用以下命令之一导入数据: - bcp 命令:使用 bcp 命令从数据文件中导入数据到 SQL Server 数据库中的表中。该命令使用以下语法:bcp database.schema.table in datafile -S servername -U username -P password -c -t separator - sqlcmd 命令:使用 sqlcmd 命令从数据文件中导入数据到 SQL Server 数据库中的表中。该命令使用以下语法:sqlcmd -S servername -d database -U username -P password -i scriptfile 在这些命令中,您需要替换以下参数: - database:要导入数据数据库名称。 - schema:要导入数据的表所在的架构名称。 - table:要导入数据的表名称。 - datafile:包含要导入的数据的文件的路径和文件名。 - servername:SQL Server 实例的名称。 - username:连接到 SQL Server 的用户名。 - password:连接到 SQL Server 的密码。 - separator:数据文件中用于分隔字段值的分隔符。 以上是使用 bcp 或 sqlcmd 导入数据的基本步骤和命令。您可以根据需要进行调整或添加其他参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值