是的,您可以通过主键对数据进行排序,然后将数据写入json或xml文件。
然后,您可以对两个文件运行diff。
您还可以通过主键对它进行分块处理,这样就不必使用巨大的文件。
记录所有不相等的差异。
如果没有什么区别,您也可以只在两个文件块上运行MD5 / SHA1,如果是哈希宏,就没有区别,如果没有,就没有区别。
从nhibernate的经验来看,您需要注意的是:
- 位字段
- text,ntext,varchar(MAX),nvarchar(MAX)字段
(顺便说一句,它们映射到没有长度的varchar-编码UTF8)
- varbinary,varbinary(MAX),图像(bytea []与LOB)
- xml
- 在将所有数据插入pgsql后,将重置所有主键的id串行生成器。
要注意的另一件事是CURRENT_TIMESTAMP使用哪个时区。
注意:
实际上,我实际上直接运行了System.Data.DataRowComparer,而没有将数据写入文件:
static void Main(string[] args)
{
DataTable dt1 = dt1();
DataTable dt2= dt2();
IEnumerable<DataRow> idr1 = dt1.Select();
IEnumerable<DataRow> idr2 = dt2.Select();
// MyDataRowComparer MyComparer = new MyDataRowComparer();
// IEnumerable<DataRow> Results = idr1.Except(idr2,MyComparer);
IEnumerable<DataRow> results = idr1.Except(idr2);
}
然后,将所有不匹配的DataRows写入到日志文件中,对于每个表一个目录(如果存在差异)。
但是,不知道Python将代替System.Data.DataRowComparer使用什么。
由于这是一项一次性的任务,因此您也可以选择不使用Python执行此操作,而改用C#(请参见上面的代码示例)。
此外,如果您有大表,则可以使用具有顺序访问权限的DataReader进行比较。但是,如果采用其他方法削减了成本,则会大大减少所需的工作量。
,
您是否考虑过使用外部数据包装器(FDW)在Postgres中显示SQL Server数据?
https://github.com/tds-fdw/tds_fdw
我没有使用过FDW工具,但是总的来说,基本的FDW设置过程很简单。 FDW就像代理/别名一样,使您可以访问远程数据,就像它们存储在Postgres中一样。上面链接的工具不支持联接,因此您必须迭代执行比较,依此类推。根据设置,您必须检查性能是否足够。
请报告!
本文链接:https://www.f2er.com/3167361.html