在存储过程中使用LOAD DATA INFILE命令

时间:2013-07-31 10:27:17

标签: mysql file-io load

这有可能吗?我在一些网站上看到一个程序中不能使用LOAD DATA命令。

1 个答案:

答案 0 :(得分:4)

不,我想,由于安全原因,这是不可能的。但是,您可以使用此技巧为数据库中的表生成“LOAD DATA”查询(返回每个表的一系列查询:在加载数据之前截断表,然后禁用密钥,然后加载数据,然后启用密钥):

SELECT CONCAT('TRUNCATE TABLE ',table_name,'; ALTER TABLE ',table_name,' DISABLE KEYS;    LOAD DATA INFILE "',table_name,'.txt" INTO TABLE ',table_name,' FIELDS TERMINATED BY "\\t" LINES TERMINATED BY "\\n"; ALTER TABLE ',table_name,' ENABLE KEYS; ')
FROM information_schema.`TABLES` as infs
WHERE infs.`TABLE_SCHEMA`=DATABASE()
AND infs.`TABLE_TYPE`!='VIEW';

运行此查询后,产生的行是用于传输数据的查询。我将完整的数据库内容移动到另一个时使用它。当然,在该查询中,您可以使用更多条件过滤所需的表。希望它有所帮助。