微软SQL Server中的批量复制工具程序(Bulk Copy Program,BCP)能让数据库管理员将数据批量导入表中或将数据从表中批量导入文档中。它还支持一些定义数据如何导出、导入到什么地方、加载哪些数据等选项。 本技巧讨论一些用bcp命令批量复制数据迁入或迁出SQL Server表的示例。这些示例在SQL Server 2005和SQL Server 2008上已经测试过。
并且我还用了AdventureWorks样本数据库。 用bcp工具导入数据 一个最简单的操作就是你可以用bcp工具将数据从SQL Server表bulk-copy到文本文件。在 Windows命令提……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
微软SQL Server中的批量复制工具程序(Bulk Copy Program,BCP)能让数据库管理员将数据批量导入表中或将数据从表中批量导入文档中。它还支持一些定义数据如何导出、导入到什么地方、加载哪些数据等选项。
本技巧讨论一些用bcp命令批量复制数据迁入或迁出SQL Server表的示例。这些示例在SQL Server 2005和SQL Server 2008上已经测试过。并且我还用了AdventureWorks样本数据库。
用bcp工具导入数据
一个最简单的操作就是你可以用bcp工具将数据从SQL Server表bulk-copy到文本文件。在 Windows命令提示符中插入命令,你就可以运行bcp命令了。例如以下命令,从 AdventureWorks数据库里的Sales.vSalesPerson视图复制数据到C:DataSalesPerson.txt文件:
bcp AdventureWorks.Sales.vSalesPerson out C:DataSalesPerson.txt -c –T |
如同你看到的一样,bcp命令以工具名称开头,后面为完全合格表名database.schema.table。接下来就是out 关键字,关键字告诉bcp工具数据将会从该表中导出。目标文本文件的路径和文件名称紧跟out 关键字之后。注意本文中列出的命令例子可能包括很多行,但是所有的例子应该像一个单独的命令一样运行。
除了这些基本参数,bcp工具还支持控制工具行为的switch。在以上例子中,无论数据是以何种方式存储在源表中的,-c switch表示所有的数据都应是字符数据。如果你没有指定-c开关或其他相关类型的switch,你就需要在进入bcp命令后指定每个列的switch类型。
上述例子中另一个switch就是-T,它主要是告诉bcp工具使用可靠连接来关联SQL Server示例。如果你没有指定-T,你就必须提供用户名(-U switch)和密码(-P switch),或者你需要提供相关信息。
因为在先前列举的例子中没有指定实例,bcp工具就在本地机上使用的默认实例。要指定一个SQL Server实例,就要用到-S switch,后面紧跟的是服务器名称,如下所示:
bcp AdventureWorks.Sales.vSalesPerson out C:DataSalesPerson.txt -c -T -S Server01 |
Bcp工具现在和Server01上的默认实例连接。如果你想连接到具体实例而不是默认的实例,你就必须指定实例名称和服务器名称,如Server01SqlSrv。
通过默认,bcp工具使用制表符分隔目标文件中里的域。但你也可以用-t switch调过这一操作,如下:
bcp AdventureWorks.Sales.vSalesPerson out C:DataSalesPerson.csv -c -T -t, |
在这种情况下,-t switch后有一个逗号,意思就是说数据域现在由逗号分开。这样做可让你讲数据保存到.csv 文件,便于你在Microsoft Excel文件中查看这些数据。
以上一些例子只限于将数据从表中导出。但是你还可以用bcp命令运行Transact-SQL查询、到出查询条件。例如以下bcp命令,包括只从vSalesPerson视图中检索SalesPersonID、FirstName和LastName的SELECT语句:
bcp "SELECT SalesPersonID, FirstName, LastName FROM AdventureWorks.Sales.vSalesPerson" queryout C:DataSalesPerson.csv -c -T -t, |
这种情况下引号里的查询通过的是bcp命令而不是表名称。此外,queryout取代了out关键字。但是命令其他部分和先前的例子相同。结果,SalesPerson.csv文件现在只包含三个指定列。你还可以让查询更加精炼:例如你可以包括限定只从源表中返回那些行的WHERE子句。
翻译
相关推荐
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。
-
TT数据库特别推荐:SQL Server编年史
无论是菜鸟还是资深DBA,除了要掌握基本的数据库管理、操作之外,还需要对不同产品的发展历史有一个了解。