“tablediff ”命令行工具

简介: “tablediff ”命令行工具   “tablediff ”工具支持你比较两个表的内容。它原先开发出来是为了复制场景,来帮助诊断差异的,但是它对其它情况也非常有用。当两个表的数据可能相同或者相似时,该工具可以帮助判断它们是否相同,而且如果它们是不同的,它可以识别表中的哪些数据是不同的。
“tablediff ”命令行工具

  “tablediff ”工具支持你比较两个表的内容。它原先开发出来是为了复制场景,来帮助诊断差异的,但是它对其它情况也非常有用。当两个表的数据可能相同或者相似时,该工具可以帮助判断它们是否相同,而且如果它们是不同的,它可以识别表中的哪些数据是不同的。

  “tablediff”的语法如下:

  tablediff
  [ -? ] |
  {
  -sourceserver source_server_name[\instance_name]
  -sourcedatabase source_database
  -sourcetable source_table_name
  [ -sourceschema source_schema_name ]
  [ -sourcepassword source_password ]
  [ -sourceuser source_login ]
  [ -sourcelocked ]
  -destinationserver destination_server_name[\instance_name]
  -destinationdatabase subscription_database
  -destinationtable destination_table
  [ -destinationschema destination_schema_name ]
  [ -destinationpassword destination_password ]
  [ -destinationuser destination_login ]
  [ -destinationlocked ]
  [ -b large_object_bytes ]
  [ -bf number_of_statements ]
  [ -c ]
  [ -dt ]
  [ -et table_name ]
  [ -f [ file_name ] ]
  [ -o output_file_name ]
  [ -q ]
  [ -rc number_of_retries ]
  [ -ri retry_interval ]5
  [ -strict ]
  [ -t connection_timeouts ]
  }

  “tablediff”语法需要源和目标的连接信息来执行比较。这些信息包括将要比较的服务器,数据库和表信息。连接信息必须提供给SQL Server认证,但是如果Windows认证是可用的,则可以空着。源参数和目标参数可以是两个不同的服务器或者相同的服务器,“tablediff”工具可以运行在一台机器上,既不是源,也不是目标。

  为了说明该工具的作用,我们来看一个简单的比较示例,我们使用了“AdventureWorks2008R2”数据库。要创建比较用的数据,最简单的方法是把一个表中的内容查询复制到另一个表中,然后更新一个表的某些行内容。下面的“SELECT”语句对“AdventureWorks2008R2 ”数据库中的“AddressType”表进行了复制,复制的新表是“AddressTypeCopy”:

  select *
  into Person.AddressTypeCopy
  from Person.AddressType

  此外,下面的语句更新了“AddressTypeCopy ”表中的两行(为测试用),这样你可以用“tablediff ”工具找出它们之间的差异:

  UPDATE Person.AddressTypeCopy
  SET Name = ‘Billing New’
  WHERE AddressTypeId = 1
  UPDATE Person.AddressTypeCopy
  SET Name = ‘Shipping New’,
  ModifiedDate = ‘20090918’
  WHERE AddressTypeId = 5

  “tablediff ”工具可以加上下面的参数执行,这样就可以识别“AddressType ”表和“AddressTypeCopy ”表之间的差异:

  tablediff -sourceserver “(local)” -sourcedatabase “AdventureWorks2008R2”
  -sourceschema “Person”-sourcetable “AddressType”
  -destinationserver “(local)” -destinationdatabase “AdventureWorks2008R2”
  -destinationschema “Person” -destinationtable “AddressTypeCopy”
  -f c:\TableDiff_Output.txt

  目标参数和源参数与前面的例子相同,除了表参数,也就是其中的源表“AddressType ”和目标表“AddressTypeCopy”。该工具使用这些参数执行会在命令行提示窗口中得到下面的输出内容:

  用户指定的代理参数值:

  -sourceserver (local)
  -sourcedatabase AdventureWorks2008R2
  -sourceschema Person
  -sourcetable AddressType
  -destinationserver (local)
  -destinationdatabase AdventureWorks2008R2
  -destinationschema Person
  -destinationtable AddressTypeCopy
  -f c:\TableDiff_Output
  Table [AdventureWorks2008R2].[Person].[AddressType] on (local)
  and Table [AdventureWorks2008R2].[Person].[AddressTypeCopy] on (local)
  have 2 differences.
  Fix SQL written to c:\TableDiff_Output.sql.
  Err AddressTypeID Col
  Mismatch 1 Name
  Mismatch 5 ModifiedDate Name
  The requested operation took 0.296875 seconds.

  输出内容中首先显示的是所采用参数的摘要,然后显示了比较结果。在这个例子中,它找到了两处差异,因为我们前面更新了“AddressTypeCopy”表。此外,本例中使用“-f”参数使得“tablediff”工具输出了可以用来修正目标表中差异的SQL文件。本例中该输出文件的内容如下:

  — Host: (local)
  — Database: [AdventureWorks2008R2]
  — Table: [Person].[AddressTypeCopy]
  SET IDENTITY_INSERT [Person].[AddressTypeCopy] ON
  UPDATE [Person].[AddressTypeCopy]
  SET [Name]=’Billing’
  WHERE [AddressTypeID] = 1
  UPDATE [Person].[AddressTypeCopy]
  SET [ModifiedDate]=’2002-06-01 00:00:00.000’,
  [Name]=’Shipping’ WHERE [AddressTypeID] = 5
  SET IDENTITY_INSERT [Person].[AddressTypeCopy] OFF

  要记住,我们可以用“tablediff”工具实现几种不同的比较类型。“-q”参数会触发快速比较,只比较记录数量并查找对象的差异。“-strict”参数在比较运行时会强制要求每个表的结构是相同的。如果没有使用该参数,该工具允许一些列有不同的数据类型,只要他们满足数据类型自动映射的需求就行(例如,INT可以与BIGINT相比较)。

  “tablediff”工具可以用在许多种不同类型的比较上。你如何使用这一工具取决于几个因素,包括你要比较的数据数量和类型。

目录
相关文章
|
Swift
3 Swiftc命令行工具
Swiftc命令行工具
56 0
|
3月前
vcpkg 命令行工具的选项说明
vcpkg 命令行工具的选项说明
23 0
|
5月前
|
Linux 网络安全 Perl
Linux命令:探索强大的命令行工具
探索Linux命令行工具,了解CLI基本结构:命令名、选项和参数。本文概述常用命令,如文件和目录操作(ls, cd, mkdir)、文本处理(cat, grep, sed)和系统管理(top, df, free)。学习技巧,如Tab补全、通配符和使用管道符、重定向。掌握命令,提升Linux使用效率。
|
6月前
|
Unix Shell Linux
阿里云命令行工具
阿里云命令行工具
58 3
|
6月前
|
JavaScript 前端开发 数据安全/隐私保护
NodeJS 下构建 命令行工具(CLI) 与 交互式命令界面 的实践
NodeJS 下构建 命令行工具(CLI) 与 交互式命令界面 的实践
435 1
|
11月前
|
数据中心
Terraform 的命令行工具
Terraform 的命令行工具
65 0
|
JavaScript 前端开发 数据安全/隐私保护
NodeJS 下构建 命令行工具 与 交互式命令界面 的实践
NodeJS 下构建命令行工具 与 交互式命令界面 的实践
553 0
NodeJS 下构建 命令行工具 与 交互式命令界面 的实践
|
存储 XML JSON
网络相关的命令行工具功用对比
网络相关的命令行工具功用对比
88 0
|
iOS开发 MacOS
macOS安装、运行kibana
macOS安装、运行kibana
385 0

相关课程

更多
下一篇
无影云桌面