如何将数据从一个表转移到另一表

时间:2020-11-06 06:20:28

标签: mysql jpa

我在mysql中有一个表,说 Table1 。我们有一个将数据存储在表1中的应用程序,每天保存数百万条新记录。我们需要从该表中提取数据,对其进行转换,然后将其加载到新表中,例如 Table2 (kinda ETL过程),此过程应在几秒钟的间隔内进行。我如何才能高效地执行它,而又不从Table1复制重复的记录。

尽管我在表1中引入了新字段,但说了已提取来跟踪提取。因此,如果已经提取了特定的行,则字段 Extracted 将具有表示提取的值 Y 。如果不是,则字段 Extracted 将具有值 N ,这意味着仍需要提取该行。表示ETL作业在提取后需要在表1 中更新此字段 Extracted 。我想知道的是,在如此庞大的表中每天更新数百万个新数据的记录会更有效吗?请提出建议!

谢谢你们!

2 个答案:

答案 0 :(得分:0)

如果您需要使Table2中的数据与Table1中的数据保持同步(并稍作修改),则可以在MySQL级别上选择两个选项:

  1. 触发器-在INSERT,UPDATE,DELETE触发器之后创建,它将立即将数据传输到Table2并为您进行转换。
  2. 视图-如果Table2中的数据是只读的,则创建一个视图,其中选择定义将进行所需的转换。

这两种方法的优点是Table2始终与Table1是最新的,并且不需要其他字段。

答案 1 :(得分:0)

使用它忽略重复的记录

INSERT IGNORE INTO Table2 (field1,field2) VALUES (x,y);

或使用此表更新记录,如果表上有重复的记录

INSERT INTO Table2 (field1,field2) VALUES (x,y) ON DUPLICATE KEY UPDATE primarykey=primarykeyvalues;