首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DataGrip发布加载数据本地文件

DataGrip发布加载数据本地文件
EN

Database Administration用户
提问于 2020-05-09 00:14:07
回答 2查看 1.3K关注 0票数 2

我在Datagrip中使用LOAD DATA LOCAL INFILE语句有困难。假设我有source_data.csv,如:

代码语言:javascript
运行
复制
rating,statement
-2,"I'm hungry!"
5,"I'm satisfied."
1,"Ok, but could be better."

在DataGrip中运行以下代码块之后:

代码语言:javascript
运行
复制
# loading_sample_table.sql

USE sample_db;

DROP TABLE IF EXISTS sample_table;
CREATE TABLE sample_table (rating int, statement varchar(50), id serial);

LOAD DATA
    LOCAL INFILE 'absolute/path/to/my/source_data.csv'
    INTO TABLE sample_table
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY  '\''
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (rating, statement);

我收到以下错误:

[42000][1148] The used command is not allowed with this MySQL version

SHOW VARIABLES LIKE "%version%";外壳或DataGrip中运行

代码语言:javascript
运行
复制
+--------------------------+-------------------------------+
| Variable_name            | Value                         |
+--------------------------+-------------------------------+
| immediate_server_version | 999999                        |
| innodb_version           | 8.0.18                        |
| original_server_version  | 999999                        |
| protocol_version         | 10                            |
| slave_type_conversions   |                               |
| tls_version              | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
| version                  | 8.0.18                        |
| version_comment          | MySQL Community Server - GPL  |
| version_compile_machine  | x86_64                        |
| version_compile_os       | macos10.14                    |
| version_compile_zlib     | 1.2.11                        |
+--------------------------+-------------------------------+

然后,如果我尝试以上相同的命令,但从代码块中删除LOCAL,则会收到以下错误:

[HY000][13] Can't get stat of 'absolute/path/to/my/source_data.csv' (OS errno 13 - Permission denied)

另外,我检查了SHOW GLOBAL VARIABLES LIKE 'local_infile';,可以看到:

代码语言:javascript
运行
复制
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+

但是,如果从我的终端运行:

mysql --local-infile=1 -uroot -p < 'absolute/path/to/my/loading_sample_table.sql'

输入我的根密码后,该文件将成功运行。理想情况下,我希望在DataGrip中完成所有事情。不确定如何调试此问题。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2020-05-09 23:08:39

我能够将以下参数添加到服务器端连接字符串中,并且它在不需要降级驱动程序版本的情况下工作:

jdbc:mysql://localhost:3306/?allowLoadLocalInfile=true

票数 2
EN

Database Administration用户

发布于 2020-05-09 12:14:21

它看起来像是MySQL JDBC驱动程序问题。

切换到MySQL JDBC驱动程序5.1.47,由DataGrip提供以解决此问题。

若要更改JDBC驱动程序版本,请执行以下操作:

  • 转到数据源
  • 单击Mysql并选择Go to driver
  • 将驱动程序版本更改为5.1.47

加载数据本地不确定结果:

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/266798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档