大量上传后触发

时间:2012-12-12 00:00:39

标签: mysql sql triggers automation

我有一个php页面,可以将txt文件上传到表格中,

$sql = "LOAD DATA LOCAL INFILE 'data.txt'
                    REPLACE
                    INTO TABLE tempdirtySI
                    FIELDS TERMINATED BY '\t' 
                    LINES TERMINATED BY '\n'
                    IGNORE 1 LINES
                    ";

我希望在导入包含此代码的所有数据后运行触发器。

UPDATE tempdirtysi
SET TIMESTAM = DATE_FORMAT(STR_TO_DATE(TIMESTAM, '%m/%d/%Y %H:%i:%s'), '%Y-%m-%d %H:%i:%s');
INSERT INTO temploadsi
SELECT * FROM tempdirtysi;
TRUNCATE  tempdirtysi;

我该如何解决这个问题?我试图将更新和插入吐出到两个触发器中,并且只允许导入一行。我还尝试在php页面中进行更新,并在更新后运行插入,但这也只运行1行。

也许有另一种方法可以自动化这个过程

1 个答案:

答案 0 :(得分:2)

恕我直言,你不需要触发这个。只需从PHP代码中依次执行sql命令。

$db = new mysqli('host', 'username', 'password', 'database');

$sql = 'LOAD DATA LOCAL...';
$db->query($sql);

$sql = 'UPDATE tempdirtysi SET ...';
$db->query($sql);


$sql = 'INSERT INTO temploadsi SELECT * FROM tempdirtysi';
$db->query($sql);


$sql = 'TRUNCATE  tempdirtysi';
$db->query($sql);