2012-12-12 26 views
1

我有上传txt文件到表中的PHP页面,触发后为大上传

$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行。

也许有另一种方式来自动完成这一过程

回答

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);