将数据从一个 table 附加到另一个 table
Append data from one table to another table
我有一个包含 3 列的目标 table,ID、名称、来源。
我有 10 多个源 table,每个都有多个列,但我只需要将 ID、名称和 table 名称本身附加到目标 table 中。
请注意每个 table 中列名称的命名不同,但所需的 ID 和名称具有相同的数据类型,并且 ID 和名称字段的长度足够长。
我已经有了添加数据的查询(见下文),我在执行第一个 运行 时没有问题,将所需数据添加到目标 table,因为我只需要一个查询每个 table,下面是我的代码
INSERT INTO dest_table
SELECT ID, Name, 'source_table' as Source
FROM source_table
现在的问题是我需要每天将此安排到 运行。
我希望源 table 将其新数据附加到目标 table,而不是将每个源 table 的所有记录添加到目标 table.
另一个要考虑的条件是我仍然需要来自目标 table 的数据完好无损。这意味着从源 tables 中删除的任何记录都不会从目标 table.
中删除
谢谢大家!
您可以使用 WHERE
子句排除旧数据,如下所示。我假设此 table 中的 ID 在所有 table 中是唯一的,否则您需要在目标 table 中添加另一列以识别此 ID 的来源
INSERT INTO dest_table
SELECT ID, Name, 'source_table' as Source FROM source_table
WHERE NOT EXISTS (SELECT 1 FROM dest_table dt WHERE dt.id = source_table.id)
另一种非最佳方法是在源 table 中插入时创建触发器并将数据推送到目标 table。
我有一个包含 3 列的目标 table,ID、名称、来源。 我有 10 多个源 table,每个都有多个列,但我只需要将 ID、名称和 table 名称本身附加到目标 table 中。 请注意每个 table 中列名称的命名不同,但所需的 ID 和名称具有相同的数据类型,并且 ID 和名称字段的长度足够长。
我已经有了添加数据的查询(见下文),我在执行第一个 运行 时没有问题,将所需数据添加到目标 table,因为我只需要一个查询每个 table,下面是我的代码
INSERT INTO dest_table
SELECT ID, Name, 'source_table' as Source
FROM source_table
现在的问题是我需要每天将此安排到 运行。 我希望源 table 将其新数据附加到目标 table,而不是将每个源 table 的所有记录添加到目标 table.
另一个要考虑的条件是我仍然需要来自目标 table 的数据完好无损。这意味着从源 tables 中删除的任何记录都不会从目标 table.
中删除谢谢大家!
您可以使用 WHERE
子句排除旧数据,如下所示。我假设此 table 中的 ID 在所有 table 中是唯一的,否则您需要在目标 table 中添加另一列以识别此 ID 的来源
INSERT INTO dest_table
SELECT ID, Name, 'source_table' as Source FROM source_table
WHERE NOT EXISTS (SELECT 1 FROM dest_table dt WHERE dt.id = source_table.id)
另一种非最佳方法是在源 table 中插入时创建触发器并将数据推送到目标 table。