MSSQL中使用命令行BCP命令导入导出数据

  • 2016-08-18
  • 0

 很多大型的系统不仅仅提供了友好的图形用户接口,同时也提供了命令行方式对系统进行控制。在SQL
Server中除了可以使用SQL语句对数据进行操作外,还可以使用一个命令行工具BCP对数据进行同样的操作。BCP是基于DB-Library
客户端库的工具。它的功能十分强大,BCP能够以并行方式将数据从多个客户端大容量复制到单个表中,从而大大提高了装载效率。但在执行并行操作时要注意的
是只有使用基于 ODBC 或 sql OLE DB 的 API 的应用程序才可以执行将数据并行装载到单个表中的操作。

BCP可以将SQL Server中的数据导出到任何OLE DB所支持的数据库的,如下面的语句是将authors表导出到Excel文件中

bcp “pubs.dbo.authors” out “c: emp1.xls” -c -S GNETDATAGNETDATA -U sa -P passWord

BCP不仅能够通过命令行执行,同时也可以通过SQL执行,这需要一个系统存储过程xp_cmdshell来实现,如上面的命令可改写为如下形式。

EXEC master..xp_cmdshell ’bcp “pubs.dbo.authors” out “c:temp1.xls” -c  -S GNETDATAGNETDATA -U sa -P passWord’

 

附在我本机成功的方法:

1、CMD命令行下执行:

C:>BCP “select Current_Timestamp” queryout “d:ab.txt” -c -U user1 -P p1234  -S DELL-MSSQLSQLEXPRESS

 

DELL-MSSQLSQLEXPRESS 表示: 机器名数据库实例名

2、SQL执行:

EXEC master..xp_cmdshell ’BCP “select Current_Timestamp” queryout “d:临时文件ab.txt” -c -U user1 -P 1234 -S DELL-MSSQLSQLEXPRESS’

 

DELL-MSSQLSQLEXPRESS 表示: 机器名数据库实例名

 

     最后提醒一下,不成功的原因主要与目录权限有关。请确保SQL Server 已开放 xp_cmdshell 的使用权限(可以SQL
Server外围应用配置器中设置),再一个就是要有生成文件所在目录的系统操作权限(要有目录的写权限)。因为操作权限的原因让我白白浪费了不少时间。