云计算 频道

如何使用BCP进行数据的导入导出

  【IT168微软云计算博客征文活动专稿】BCP是在本地备份SQL Azure数据的非常好的工具,通过修改BCP备份的文件,还可以将备份的数据导入到SQL Azure中,本文将介绍:

  1、如何使用BCP将SQL Azure表中的数据导出到本地数据文件中;

  2、如何使用BCP将新增数据导入到SQL Azure表中。

  什么是BCP?

  BCP是SQL Server附带的一个命令行实用程序,它可以在SQL Server(或SQL Azure)之间复制大块数据和数据文件,SQL Server 2008 R2附带的BCP工具开始完全支持SQL Azure,你可以在SQL Azure上使用BCP备份和恢复数据,也可以用它从SQL Azure表中导出数据,或是从本地新增数据中导入到SQL Azure表中。

  但需要澄清一下的是BCP不是迁移工具,它不能提取或创建任何方案(Schema),也不能在你的数据文件或表中创建任何格式的信息,如果你使用BCP备份你的数据,必须预先创建好方案或某种格式的文件,BCP数据文件不包括任何方案或格式信息,因此,如果表或视图被删除,但如果你没有格式文件,你就不能导入数据了。

  使用BCP导出SQL Azure表在的数据

  假设你是一名开发人员或数据库管理员,你老板希望你把SQL Azure中的大量数据备份下来,接到这样的任务不要害怕,用下面这个命令就可以出色地完成任务:

  注意这个命令就是在Windows命令行窗口中运行的,运行后,我们会看到如下图所示的输出信息。

如何使用BCP进行数据的导入导出

  图 1

  下面是用记事本打开 GetDataFromSQLAzure.txt 文件后显示的前24行内容。

如何使用BCP进行数据的导入导出

  图 2

  注意:本文引用的例子使用的是 AdventureWorkLTAZ2008R2 数据库,你可以从SQL Server数据库示例网站去下载( http://msftdbprodsamples.codeplex.com/releases/view/37304 )。

  使用BCP向SQL Azure导入数据

  如果你想将本地数据库中的数据导入到SQL Azure中,BCP是个不错的选择,同样,导入的过程也很简单。

  首先要在本地创建一个数据文件,其方案格式必须和SQL Azure上的目标表一致,例如,我们将 GetDataFromSQLAzure.txt 文件重命名为 MoveDataToSQLAzure.txt ,移除原有的数据项,然后手工添加如下图所示的5条新纪录。

如何使用BCP进行数据的导入导出

  图 3

  然后在Windows命令行窗口运行下面的命令:

如何使用BCP进行数据的导入导出

  图 4

  BCP有多个命令行参数,详细信息请参考SQL Server联机丛书。下面我就这里用到的几个参数做一个简要的说明。

  database_name.schema.table_name : atabase_name 指的是表或视图所在的数据库名称,如果不指定就使用用户的默认数据库,导入数据时, table_name 指的是SQL Azure上的目标表名,导出数据时, table_name 指的是SQL Azure上的源表名。

  in:从一个数据文件中复制数据到表或视图中。

  out:从数据库表或视图中复制数据到文件中,如果你指定一个存在的文件,这个文件的内容将会被覆盖。

  -c:使用字符数据类型执行一个操作。

  -U:指定连接SQL Azure服务器的登录ID,必须在连接字符串中加上SQL Azure服务器的名称,即常见的 @ 格式。

  -S:指定要连接的SQL Azure服务器,SQL Azure服务器的完全限定域名是 servername.database.windows.net 。

  -i:指定输入文件。

  queryout :从SQL Server 2008 R2开始,SQL Azure也支持 queryout 参数,当你使用这个参数时,一定要同步使用– d database_name 参数,否则BCP就不知要连接哪个数据库。

  本文只是对BCP导入导出数据的方法做了一个简要介绍,更多的用法需要你自己的发现。

0
相关文章