将DATA加载到存储过程(MySQL)

时间:2014-10-13 16:09:55

标签: mysql sql stored-procedures

我正在使用MySQL, 并尝试创建存储过程 获取CSV文件(包含2列 - ID和名称) ,删除表person_table和 使用CSV内容创建它。

这是代码:

DELIMITER $$

drop procedure if exists load_persons$$

CREATE PROCEDURE load_persons(in file_name varchar(300))
BEGIN

     drop table if exists person_table;

    CREATE TABLE `person_table` (
      `ID` varchar(30) NOT NULL,
      `Name` varchar(150) DEFAULT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOAD DATA LOCAL INFILE file_name INTO TABLE person_table;

END$$

DELIMITER ;

不幸的是我收到错误:'在存储过程中不允许加载数据'

我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在存储过程后调用load命令:

CALL load_persons(...);
-- and then
LOAD DATA LOCAL INFILE your_file_name INTO TABLE person_table;