sql - 如何在 SELECT 语句中使用表名获取不同数据库中同一张表的 COUNT?
问题描述
我正在使用 Spark SQL 将 11 个表从一个数据库 (DB1) 完全导出到另一个数据库 (DB2)。导出完成后,我将 DB1 和 DB2 上每个表的计数与表名进行比较,并检查它们是否匹配(或)不匹配。输出列应该是,
Table_name DB1_count DB2_count Match (Y/N) ?
table_1 500 500 Y
table_2 376 325 N
到目前为止,我已经能够获取一张表的第 2 列和第 3 列。但是,我不确定如何为多个表和第 1 列和第 4 列实现相同的操作。
解决方案
假设你有两张桌子:
t1:
DB1_count DB2_count
500 500
和
t2:
DB1_count DB2_count
376 325
您可以添加表名列和匹配列,并进行联合:
select 'table_1' as Table_name,
DB1_count, DB2_count,
case when DB1_count = DB2_count then Y else N end as Match
from t1
union all
select 'table_2' as Table_name,
DB1_count, DB2_count,
case when DB1_count = DB2_count then Y else N end as Match
from t2
要动态生成查询,您可以尝试:
val names = Seq(("table_1", "t1"), ("table_2", "t2"))
val query = names.map(x => s"""
select '${x._1}' as Table_name,
DB1_count, DB2_count,
case when DB1_count = DB2_count then Y else N end as Match
from ${x._2}
""").mkString("\nunion_all\n")
val result = spark.sql(query)
推荐阅读
- vb.net - How to update specific row using checkbox?
- wordpress - wp_insert_post() 白屏/空白页
- php - mPDF 库不适用于 php7.2 codeigniter
- python - 使用 Flask 执行 python 脚本
- applescript - AppleScript 下载文件
- python - 如何将字节数组转换为字符串?
- python - 来自运行 LDA 模型的 gensim 的 AttributeError
- spring-boot - 我可以为一个场景禁用我的资源服务器并为同一项目中的其他场景启用它吗
- excel - 读取存储过程主体的工作表内容并在 oracle 中创建
- arrays - 如何将数组推送到嵌入式 mongo 集合?