【问题标题】:How do I set a LOAD DATA working directory in DataGrip?如何在 DataGrip 中设置 LOAD DATA 工作目录?
【发布时间】:2021-01-22 11:46:10
【问题描述】:

我在学校的一项任务是将一些 CSV 数据加载到我的 MariaDB 实例中。导入如下:

LOAD DATA LOCAL INFILE 'products.csv'
INTO TABLE products
CHARSET utf8
FIELDS
    TERMINATED BY ','
    ENCLOSED BY '"'
LINES
    TERMINATED BY '\n'
IGNORE 1 LINES
(product_id, name ...)
;

SQL 和 CSV 文件位于“文件”面板中的同一目录中。

我得到的(非常合乎逻辑的)错误是:

[2021-01-22 12:34:41] [22000][-1] (conn=184) Could not send file : products.csv (No such file or directory)

我知道 DataGrip 有一个“从文件导入数据”工具。但是使用LOAD DATA的时候一定有办法设置工作目录吧?

【问题讨论】:

  • 尝试使用 csv 的绝对路径(完整路径)。
  • 是的,但这意味着该项目也不是很便携?
  • 如果您的 csv 文件在当前工作目录(您连接 mariadb 的目录)上可用,那么它应该可以工作。

标签: mariadb datagrip


【解决方案1】:

没有为LOAD DATA LOCAL INFILE设置默认目录的选项。

向服务器发送LOAD DATA LOCAL INFILE语句后,服务器解析语句提取文件名并向客户端请求指定文件名的内容。

如果客户端无法打开文件,则会返回错误。

因此,如果您没有指定路径和文件名,请确保该文件位于您当前的工作目录中(可能与您的应用程序启动的目录不同)。

最佳做法是始终指定完整路径。

例如 MySQL 8 提供设置选项 MYSQL_OPT_LOAD_DATA_LOCAL_DIR,
这会影响 LOAD DATA 操作的客户端 LOCAL 功能。它指定在 LOAD DATA LOCAL 语句中命名的文件必须位于的目录。

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2018-04-15
    相关资源
    最近更新 更多