如何在 DataGrip 中设置 LOAD DATA 工作目录?
Posted
技术标签:
【中文标题】如何在 DataGrip 中设置 LOAD DATA 工作目录?【英文标题】:How do I set a LOAD DATA working directory in DataGrip? 【发布时间】: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 的目录)上可用,那么它应该可以工作。 【参考方案1】:没有为LOAD DATA LOCAL INFILE
设置默认目录的选项。
向服务器发送LOAD DATA LOCAL INFILE语句后,服务器解析语句提取文件名并向客户端请求指定文件名的内容。
如果客户端无法打开文件,则会返回错误。
因此,如果您没有指定路径和文件名,请确保该文件位于您当前的工作目录中(可能与您的应用程序启动的目录不同)。
最佳做法是始终指定完整路径。
例如 mysql 8 提供设置选项 MYSQL_OPT_LOAD_DATA_LOCAL_DIR, 这会影响 LOAD DATA 操作的客户端 LOCAL 功能。它指定在 LOAD DATA LOCAL 语句中命名的文件必须位于的目录。
【讨论】:
以上是关于如何在 DataGrip 中设置 LOAD DATA 工作目录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Intellij / DataGrip Mongo DB Shell 中设置显示 20 多个结果