MySQL 加载数据本地 Infile - 路径作为用户变量

Posted

技术标签:

【中文标题】MySQL 加载数据本地 Infile - 路径作为用户变量【英文标题】:MySQL Load Data Local Infile - Path as User Variable 【发布时间】:2013-06-28 15:58:15 【问题描述】:

我想在 mysql `LOAD DATA LOCAL INFILE' 文件路径中包含一个用户变量。我们的小团队经常从 Dropbox 访问原始数据文件,因此每个人都必须在路径定义中查找/替换用户名。

我希望以下内容能够正常工作,但不断收到语法错误:

SET @USER := 'user';
SET sql_mode='PIPES_AS_CONCAT';
LOAD DATA LOCAL 
INFILE '/Users/' || @USER || '/Dropbox/Data/data.csv'

CONCAT() 也会失败。有任何想法吗?谢谢!

在这里提出了类似的问题:Load data Infile @variable into infile error,但没有接受的答案。

【问题讨论】:

【参考方案1】:

来自MySQL documentation的引用:

文件名必须以字符串形式给出。在 Windows 上,将路径名中的反斜杠指定为正斜杠或双反斜杠。 character_set_filesystem 系统变量控制文件名的解释。

这意味着它不能是准备好的语句、存储过程或任何“服务器端”的参数。字符串/路径评估必须在客户端完成。

【讨论】:

以上是关于MySQL 加载数据本地 Infile - 路径作为用户变量的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MySQL 禁用加载本地 infile 不起作用?

如何为 AWS RDS 加载数据 infile mysql 工作台?

使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL

如何保护加载数据本地infile更新查询免受sql注入

Python/MySQL - 加载数据本地文件

Infobright/MySQL 加载数据 infile 死锁