如何在亚马逊RDS上"加载数据infile"?

eyb*_*erg 33 mysql amazon-web-services amazon-rds mysql-error-1045

不确定这是否是一个更适合服务器故障的问题,但我最近一直在搞乱亚马逊RDS并且无法获得我的网站主机mysql用户的'文件'权限.

我假设一个简单的:

grant file on *.* to 'webuser@'%';
Run Code Online (Sandbox Code Playgroud)

会工作,但它没有,我似乎也不能用我的'root'用户.是什么赋予了?我们使用加载数据的原因是因为它一次完成数千次插入是超级快速的.

任何人都知道如何解决这个问题,还是我需要找到一种不同的方式?

这个页面http://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/index.html?Concepts.DBInstance.html似乎暗示我需要找到一种不同的方法来解决这个问题.

救命?

更新 我不是要尝试导入数据库 - 我只想使用文件加载选项一次插入几十万行.

在挖掘这个是我们拥有的:

 mysql> grant file on *.* to 'devuser'@'%';
 ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)


 mysql> select User, File_priv, Grant_priv, Super_priv from mysql.user;
 +----------+-----------+------------+------------+
 | User     | File_priv | Grant_priv | Super_priv |
 +----------+-----------+------------+------------+
 | rdsadmin | Y         | Y          | Y          |
 | root     | N         | Y          | N          |
 | devuser  | N         | N          | N          |
 +----------+-----------+------------+------------+
Run Code Online (Sandbox Code Playgroud)

chr*_*nne 88

您需要使用,LOAD DATA LOCAL INFILE因为该文件不在MySQL服务器上,而是在您运行命令的计算机上.

根据下面的评论,您可能还需要包含该标志:

--local-infile=1
Run Code Online (Sandbox Code Playgroud)

  • 您还需要在mysql客户端上使用--local-infile = 1标志,否则您将获得"ERROR 1148(42000):此MySQL版本不允许使用的命令" (13认同)

use*_*124 9

无论它有什么价值......你可以将LOCAL操作数添加到LOAD DATA INFILE而不是mysqlimport用来解决这个问题.

LOAD DATA LOCAL INFILE ...

这将在不授予FILE权限的情况下工作.


Dav*_*unt 5

很确定你还不能这样做,因为你没有RDS的最高级MySQL权限.我们只进行了一些测试,但导入数据库的最简单方法似乎是从源框中管道,例如

mysqldump MYDB | mysql -h rds-amazon-blah.com --user=youruser --pass=thepass
Run Code Online (Sandbox Code Playgroud)


Ada*_*rsh 5

也遇到了这个问题,尝试使用Windows 上的MySQL Workbench将 .csv 数据从我的本地机器上传到 AWS RDS 实例。

我需要添加的内容OPT_LOCAL_INFILE=1是:连接 > 高级 > 其他。注意大写是必需的。

在 AWS Developer Forums 中找到了PeterMag 的这个答案。


欲了解更多信息:

SHOW VARIABLES LIKE 'local_infile';已经返回ON ,查询是:

LOAD DATA LOCAL INFILE 'filepath/file.csv' 
    INTO TABLE `table_name`
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;
Run Code Online (Sandbox Code Playgroud)

从上面引用的答案来源复制:

显然这是 MYSQL Workbench V8.X 中的一个错误。除了本线程前面显示的配置,您还需要更改 Workbench 中的 MYSQL 连接,如下所示:

  1. 转到显示所有连接的 MYSQL 的欢迎页面
  2. 选择管理服务器连接(小扳手图标)
  3. 选择您的连接
  4. 选择高级选项卡
  5. 在其他框中,添加 OPT_LOCAL_INFILE=1

现在我可以在 MYSQL RDS 上使用 LOAD DATA LOCAL INFILE 查询。似乎不需要 File_priv 权限。*