4

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

4

1 回答 1

6

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

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

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

于 2013-08-01T11:07:40.033 回答