我可以使用的mysqlimport/LOAD DATA LOCAL INFILE存储过程

问题描述:

我使用的mysqlimport得到从文本文件的行内的表很容易,像这样:我可以使用的mysqlimport/LOAD DATA LOCAL INFILE存储过程

mysqlimport -u root -p --local mytest employee.txt 

我能做到这一点从存储过程?到目前为止所有的尝试都失败了恐怕这只能通过命令行来使用?目的是让一个作业调用一个SP,这个SP从一个文本文件中提取行(制表符分隔),然后SP将每行与现有表进行比较,如果发现它将更新或插入。

感谢你

存储过程在服务器上执行并且无法访问远程文件系统。

这大致相当于一个叫LOAD DATA INFILE

LOAD DATA INFILE 'employee.txt' INTO TABLE mytest 

这需要employee.txt驻留在服务器上。 --local选项要求mysqlimport客户端桥接该数据。

+0

谢谢你的时间。我不完全理解你对--local选项所说的话,这是什么意思?你也说'LOAD DATA INFILE'employee.txt'INTO TABLE mytest'可以从存储过程运行,只要在服务器上提供txt文件?最后,mysqlimport是否也要求文件在服务器上?谢谢 – Mat41 2013-05-01 22:40:56

+0

'--local'选项允许您将本地文件导入服务器,因为服务器无法在没有帮助的情况下从您的机器加载文件。存储过程将仅限于在服务器上加载文件。 – tadman 2013-05-02 15:24:31

加载数据INFILE不适用于存储的进程。你想使用Perl脚本或其他方式来做到这一点

+0

你会怎么做? – Robert 2013-10-07 08:42:34

+0

参考: http://*.com/questions/10737974/load-data-local-infile-gives-the-error-the-used-command-is-not-allowed-with-this – 2013-10-14 18:22:24