用bcp工具导入和导出批量数据(上)

 
   | |

导读:本技巧讨论一些用bcp命令批量复制数据迁入或迁出SQL Server表的示例。这些示例在SQL Server 2005和SQL Server 2008上已经测试过。并且我还用了……

关键词:SQL Server 2005 SQL Server导入/导出

正在加载数据... 【TechTarget中国原创】微软SQL Server中的批量复制工具程序(Bulk Copy Program,BCP)能让数据库管理员将数据批量导入表中或将数据从表中批量导入文档中。它还支持一些定义数据如何导出、导入到什么地方、加载哪些数据等选项。

【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:\Data\SalesPerson.txt文件:

bcp AdventureWorks.Sales.vSalesPerson out C:\Data\SalesPerson.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:\Data\SalesPerson.txt -c -T -S Server01

  Bcp工具现在和Server01上的默认实例连接。如果你想连接到具体实例而不是默认的实例,你就必须指定实例名称和服务器名称,如Server01\SqlSrv。

  通过默认,bcp工具使用制表符分隔目标文件中里的域。但你也可以用-t switch调过这一操作,如下:


 bcp AdventureWorks.Sales.vSalesPerson out C:\Data\SalesPerson.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:\Data\SalesPerson.csv -c -T -t,

  这种情况下引号里的查询通过的是bcp命令而不是表名称。此外,queryout取代了out关键字。但是命令其他部分和先前的例子相同。结果,SalesPerson.csv文件现在只包含三个指定列。你还可以让查询更加精炼:例如你可以包括限定只从源表中返回那些行的WHERE子句。

 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录