【问题标题】:MySql stored procedure in workbench工作台中的 MySql 存储过程
【发布时间】:2014-01-04 19:26:27
【问题描述】:

我正在使用 MySQL 基准测试。我必须创建一个表并编写一个程序来从 textfilnd 读取 10 并将它们加载到创建的表中。

我使用了查询:

use test; 
DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_table`() 
BEGIN 
LOAD DATA LOCAL INFILE "D:/tablevalue.txt" 
INTO TABLE new_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'; 

END $$ 

DELIMITER ; 

但是存储过程中不允许加载数据之类的错误,然后我使用了查询。

use test; 
drop procedure if exists `proctable`; 
DELIMITER $$ 

create definer =`root`@`localhost` procedure `proctable`() 
begin 

do sys_exec(concat('perl LOAD_DATA_INFILE.pl test.new_table ', 'D:\tablevalue.txt')); 

end $$ 

DELIMITER ; 

但是数据没有从文件上传到表中。

如果有其他选择请告诉我

【问题讨论】:

  • 一旦创建存储过程。你打电话给proc了吗?
  • 是的。我打电话给程序(调用proctable()),但它说。错误代码:1305 FUNCTION test.sys_exec 不存在
  • 对不起,它没有说任何错误。正在运行,但未显示任何选定的行。

标签: mysql mysql-workbench mysql-error-1064


【解决方案1】:

存储过程有一些限制。例如 - 不能使用 LOAD DATA INFILE 命令。尝试在没有过程的情况下执行此操作,只需将 LOAD DATA INFILE 语句作为单独的命令调用即可。

Restrictions on Stored Programs.

【讨论】:

  • 好吧好吧。是否有任何其他选项可以使用存储过程将数据从文本文件上传到表中?
  • 看看 UDF,你可以从存储的例程中调用它,但我建议使用简单的 LOAD DATA INFILE - 没有过程。
  • 您能否发布一个示例用户定义函数,用于从文本文件中检索数据以表我的任务?
  • 我没有这个例子。您应该使用c 或其他程序语言编写类似LOAD..DATA 的函数,然后编译代码并创建使用该函数的UDF。这是文档的链接 - dev.mysql.com/doc/refman/5.7/en/create-function-udf.html。您可以在互联网上找到一些示例。但是,正如我所说 - 这不是好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多