snowflake环境下的sql查询数据验证

mkshixfv  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(486)

我有两个数据库说在雪花开发和质量。目前我正在两个数据库表上分别运行sql查询。并分别存储输出。然后使用excel对两个文件进行手动数据验证。是通过任何方式实现任何脚本或sql查询自动化之类的事情。进行验证。
谢谢

cmssoen2

cmssoen21#

根据您的需求,有许多方法可以进行验证。假设您想验证两个不同数据库中employee表的列数据,您可以创建一个sql脚本并运行它来验证是否存在任何差异。下面是一个示例,您可以进一步扩展它,或者在它的基础上构建您的用例。

  1. // Comparing data of tables in different databases
  2. use role accountadmin;
  3. create or replace database exampledb1;
  4. use database exampledb1;
  5. create or replace table employee
  6. ( id int,
  7. FirstName varchar(20),
  8. LastName varchar(20),
  9. email varchar(50)
  10. );
  11. insert into employee values
  12. (1,'Sarah', 'Janes','sarah.janes@hotmail.com'),
  13. (2,'Richard', 'Hays','richard.hays@gmail.com'),
  14. (3,'Maria', 'Khan','maria.khan@wow.com');
  15. create or replace database exampledb2;
  16. use database exampledb2;
  17. create or replace table employee
  18. ( id int,
  19. FirstName varchar(20),
  20. LastName varchar(20),
  21. email varchar(50)
  22. );
  23. insert into employee values
  24. (1,'Sarah', 'Janes','sarah.janes@hotmail.com'),
  25. (2,'Richard1', 'Hays','richard.hays@gmail.com'),
  26. (3,'Maria', 'Khan','maria.khan@wow.com');
  27. // Check the variance by comparing hash of each row
  28. // You should have correct access to both databases, scheam and underlying tables
  29. with qadata as
  30. (
  31. select id,hash(FirstName||LastName||email) as r1, FirstName, LastName,Email
  32. from exampledb2.public.employee as r1
  33. ),
  34. proddata as
  35. (
  36. select id,hash(t.FirstName||t.LastName||t.email) as r1, FirstName, LastName,Email
  37. from exampledb1.public.employee as t
  38. )
  39. select prod.id,
  40. case when prod.r1 = qa.r1 then 'Matched' else 'Variance' end as CheckStatus,
  41. prod.FirstName,
  42. prod.LastName,
  43. prod.Email,
  44. qa.FirstName,
  45. qa.LastName,
  46. qa.Email
  47. from qadata qa
  48. inner join proddata prod on qa.id=prod.id;

下面是输出列checkstatus,它将标识行数据是否匹配,或者是否存在如第2行所示的差异。比较结果

展开查看全部

相关问题