全部博文(221)
2012年(221)
分类: 云计算
2012-08-01 17:12:06
使用BCP进行云数据迁移
BCP是在本地备份SQL Azure数据的最佳工具,通过修改BCP备份的文件,还可以将备份的数据导入到SQL Azure中,如何使用BCP将SQL Azure表中的数据导出到本地数据文件中;如何使用BCP将新增数据导入到SQL Azure表中?这是目前企业部署云计算服务,进行数据迁移必须要做的事情。
BCP是SQL Server附带的一个命令行实用程序,它可以在SQL Server(或SQL Azure)之间复制大块数据和数据文件,BCP不是迁移工具,它不能提取或创建任何方案(Schema),也不能在你的数据文件或表中创建任何格式的信息,如果你使用BCP备份你的数据,必须预先创建好方案或某种格式的文件,BCP数据文件不包括任何方案或格式信息,SQL Server 2008 R2附带的BCP工具开始完全支持SQL Azure,你可以在SQL Azure上使用BCP备份和恢复数据,也可以用它从SQL Azure表中导出数据,或是从本地新增数据中导入到SQL Azure表中。
把SQL Azure中的大量数据备份下来,用下面这个命令就可以出色地完成任务:
bcp AdventureWorksLTAZ2008R2.SalesLT.Customer out C:\Users\user\Documents\GetDataFromSQLAzure.txt -c -U username@servername -S tcp:servername.database.windows.net -P password
注意这个命令就是在windows命令行窗口中运行的,运行后,我们会看到如下图所示的输出信息。
图 1
下面是用记事本打开GetDataFromSQLAzure.txt文件后显示的前24行内容。
图 2
如果你想将本地数据库中的数据导入到SQL Azure中,BCP是个不错的选择,同样,导入的过程也很简单。
首先要在本地创建一个数据文件,其方案格式必须和SQL Azure上的目标表一致,例如,我们将GetDataFromSQLAzure.txt文件重命名为MoveDataToSQLAzure.txt,移除原有的数据项,然后手工添加如下图所示的5条新纪录。
图 3
然后在Windows命令行窗口运行下面的命令:
bcp AdventureWorksLTAZ2008R2.SalesLT.Customer in C:\Users\user\Documents\MoveDataToSQLAzure.txt -c -U username@servername -S tcp:servername.database.windows.net -P password
这个命令产生的输出信息如下图所示。
图 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就不知要连接哪个数据库。
如果企业要进行私有云的部署,云计算管理员要保证私有云的数据完整性,必须要掌握数据迁移问题,无论是云数据的备份还是对云数据的恢复都需要掌握这些基本的步骤和关键知识。可以对我们后期云计算的部署和维护起到更好的作用。