将数据加载到存储过程中(MySQL)

3
我将使用MySQL,并尝试创建存储过程,该过程可获取CSV文件(包含2列 - ID和Name),删除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 ;

很不幸,我遇到了一个错误:'LOAD DATA is not allowed in stored procedures'

我该怎么做?

谢谢!

1个回答

1

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

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

嗨,谢谢!但我需要它在存储过程中执行。 - Tal Eden
1
由于MySQL策略的限制,无法进行操作:“LOAD DATA不允许在存储过程中使用”。 - Ivan Cachicatari
这是关于安全性的问题。 - Gianluca D'Ardia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接