【问题标题】:Trigger for LOAD DATA LOCAL INFILELOAD DATA LOCAL INFILE 触发器
【发布时间】:2012-09-17 16:20:35
【问题描述】:

我正在使用“LOAD DATA LOCAL INFILE”将 csv 文件导入数据库表。好奇心的完整查询是:

LOAD DATA LOCAL INFILE '".addslashes($current_file)."' REPLACE INTO TABLE $current_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '" . '"' . "' ESCAPED BY " . "'\\\\'" . " LINES TERMINATED BY '\n' IGNORE 1 LINES ($toVars) SET $setCols

现在,简而言之,就是将 csv 行加载到 table_A 中。我想要做的是创建一个内存表,它将记录曾经输入到table_A 的每一行。我将使用 MYSQL 触发器 来实现这一点。现在我熟悉使用带有inserts 的触发器来执行。我的问题是;如何为LOAD DATA LOCAL INFILE 命令创建AFTER 触发器?

只有在LOAD DATA LOCAL INFILE 查询完成所有操作后,触发器才会触发。它不应该在每个增量插入或任何情况下触发。

【问题讨论】:

  • mysql中还没有语句级触发器...
  • 在 LOAD DATA LOCAL INFILE 之后运行你的 stetement。
  • @Devart 那不是我想做的。我想在我的数据库中设置触发器,这将有助于在 mysql 级别而不是 php 级别进行数据移动。我的印象是从 MySQL 5.0.2 版本开始支持语句?我已经可以在触发器中使用 WHERE 和 OR 等语句了。

标签: mysql sql database triggers


【解决方案1】:

您是否有一个表格来跟踪这些批量上传,例如谁运行了这些上传、上传了多长时间等?

如果是这样,您可以将其用作哨兵并将触发器放在那里以对另一个表中新加载的数据进行批量操作。

有意义吗?

【讨论】:

  • 我将我的数据库抽象为由表组成的层,这些表跟踪处置、来源、输入方法等。这不是问题。但我不明白关于将其用作哨兵的最后一部分?
  • 当您更新元数据以表示加载完成时,触发触发器然后更新新加载的数据。我的意思是this context中的哨兵
  • 嗯,就像一个进度表?对于任何给定的任务,都有一个 true 和 false 布尔值。因此,如果 php 启动并开始处理内容,我可以让 php 代码在最后更改该表上的 bool 值,该表将具有 TRIGGER 值以在 UPDATE WHERE foo.column = 'false'?
  • 想一想,我确实有一个我称之为“集合”的表,它跟踪进入系统的数据实例并将它们封装在我所谓的“集合”中。所以导入是一个集合,手动输入也是一个集合。我可以在该设置表中有一个字段用于 bool 触发器。
  • 我喜欢计划齐备!
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多