首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分两个表的最快方法一个在sql中,另一个在access中

问区分两个表的最快方法一个在sql中,另一个在access中
EN

Stack Overflow用户
提问于 2012-06-16 16:53:22
回答 3查看 1K关注 0票数 1

我正在编写一个表差异实用程序,用于检查access和sql server中相似的架构表之间的差异。我只想知道什么是实现它的最快方法,因为我在两个数据库中都有非常大量的表。

我正在比较两个表,比方说,在access和SQL中,tableX具有相同的模式、相同的列定义和约束,并且它在表中有不同的行和元组,我想找出差异并提取差异

谢谢Steave

EN

回答 3

Stack Overflow用户

发布于 2012-06-17 00:26:35

不幸的是,听起来您希望在两个不同的系统之间进行非常细粒度的差异,这不允许很高的效率。

如果表不是太大,最好的选择可能是导出到CSV(请确保对结果进行排序!)并对它们运行diff命令。

票数 2
EN

Stack Overflow用户

发布于 2012-06-16 16:57:23

如果您只需要检查字段名称和类型,那么ADO可能适合:http://www.w3schools.com/ado/met_conn_openschema.asp。Access字段类型和SQL Server字段类型之间不会完全匹配。

票数 1
EN

Stack Overflow用户

发布于 2012-06-17 01:57:11

创建到ms access数据库的链接服务器,并使用查询来比较您的表:

代码语言:javascript
复制
EXEC sp_addlinkedserver @server = 'DBName'
                      , @provider = 'Microsoft.Jet.OLEDB.4.0'
                      , @srvproduct = 'OLE DB Provider for Jet'
                      , @datasrc = 'C:\myaccessdb.mdb'

使用如下查询比较两个表是最简单的

代码语言:javascript
复制
SELECT MIN(table_name), column1, column2, ...
FROM (
  SELECT 'sql server table' , column1, column2, ...
  FROM A
  UNION ALL
  SELECT 'msaccess table' , column1, column2, ...
  FROM B) tmp
GROUP BY column1, column2, ...
HAVING COUNT(*) = 1

另一种选择是使用Sql Server附带的tablediff.exe实用程序。请参阅more info on msdn

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11062050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档