sql - 查询 SQL 表并仅将更新的行传输到不同的数据库
问题描述
我有一个不断更新的数据库表。我希望仅查询对列中具有特定属性的行所做的更改/添加。例如,获取已更改/添加的行,其中的“描述”列是“xyz”。我的最终目标是将这些行复制到另一个数据库中的另一个表中。这甚至可能吗?不只是查询和覆盖另一个数据库中的行的原因是为了避免效率低下。
到目前为止我尝试了什么?
我可以在表上选择查询来获取行,但它给了我所有的行,而不是那些已经更改或最近添加的行。如果我将这些行添加到另一个数据库中的表中,我唯一的选择就是覆盖这些行。
日志表记录表中的更改,但我无法在 SQL 中放置其他过滤器,它告诉我哪些更改与“描述”列关联为“xyz”。
解决方案
你可以通过两种方式做到这一点
有新的日期字段/列,如 update_time 和/或 create_time(如果需要,可以默认)。这些字段将指示记录的状态。您需要保存您的 previous_run_time,然后您的选择查询将查找 update_time/create_time 大于 previous_run_time 的记录,然后您可以将这些记录移动到新数据库。
让 CDC 打开源表,该表在 SQL Server 中默认可用,然后只移动那些受到影响的记录。
推荐阅读
- c# - C# 传递带有参数的 Func,其中 1 个参数在传递时设置,其他参数在内部设置
- vue.js - 是否总是需要在数据中声明属性:{ }
- reactjs - 在 react-hook-forms 表单中动态添加或删除项目并注册输入?
- r - 如何根据开始和结束日期计算季度下降的观察次数?
- pyspark - 在groupBy之后按另一列的最大值查询一列
- reactjs - npx react-native run-windows 在 CPP 构建阶段失败
- java - IntelliJ IDEA 中的通配符导入
- flutter - 如何将通过 Timer.periodic 从 API 检索到的数据集成到 Flutter Cubit 项目中
- python - 获取容器的所有 pod,将它们存储在文本文件中,然后在单个命令中将这些文件用作 args
- javascript - Laravel 8 和 PHP:使用 Google Cloud Speech to Text API