在Jetbrains Datagrip中使用PostgreSQL\copy命令创建批处理文件

在Jetbrains Datagrip中使用PostgreSQL\copy命令创建批处理文件,postgresql,datagrip,Postgresql,Datagrip,我正在熟悉Datagrip的独立版本,在理解通过控制台、外部文件、临时文件等编写SQL的不同方法时遇到了一些困难 我正在管理、参考文档,并且很高兴能够把事情弄清楚 但是,我尝试使用Postgres\copy命令通过批处理文件将CSV数据摄取到表中。Datagrip将无错误地执行此命令,但未填充任何数据 这是我在console视图中编写和运行的语法: \copy tablename from 'C:\Users\username\data_file.txt' WITH DELIMITER E'\t

我正在熟悉Datagrip的独立版本,在理解通过控制台、外部文件、临时文件等编写SQL的不同方法时遇到了一些困难

我正在管理、参考文档,并且很高兴能够把事情弄清楚

但是,我尝试使用Postgres
\copy
命令通过批处理文件将CSV数据摄取到表中。Datagrip将无错误地执行此命令,但未填充任何数据

这是我在console视图中编写和运行的语法:

\copy tablename from 'C:\Users\username\data_file.txt' WITH DELIMITER E'\t' csv; 
请注意,数据以选项卡分隔并存储在.txt文件中


我可以很好地使用Datagrip的导入功能(通过上下文菜单),但我想了解如何发出类似的命令。

\copy
是命令行PostgreSQL客户端的命令
psql

我怀疑Datagrip是否调用了
psql
,因此它将无法使用
\copy
或任何其他“反斜杠命令”


你可能必须使用。或者您开始使用
psql

好的,但是SQL COPY命令呢

如何使用datagrip运行类似的操作

BEGIN;
CREATE TEMPORARY TABLE temp_json(values text) ON COMMIT DROP;
COPY temp_json FROM 'MY_FILE.JSON';
SELECT values->>'aJsonField' as f
FROM (select values::json AS values FROM temp_json) AS a;
COMMIT;
我尝试用完整路径、参数(?)替换“MY_FILE.JSON”,并将其放入sql目录等

答案是:

[2021-05-05 10:30:45] [58P01] ERROR: could not open file '...' for reading : No such file or directory
编辑: 我知道为什么。RTFM-_-

使用文件名复制指示PostgreSQL server直接读取或写入文件。PostgreSQL用户(服务器运行时的用户ID)必须可以访问该文件,并且必须从服务器的角度指定名称


对不起……

我不完全理解这个问题与s有什么关系。我看不到任何与之相关的代码。本教程还详细介绍了编写SQL的不同方法: