在Jetbrains Datagrip中使用PostgreSQL\copy命令创建批处理文件
我正在熟悉Datagrip的独立版本,在理解通过控制台、外部文件、临时文件等编写SQL的不同方法时遇到了一些困难 我正在管理、参考文档,并且很高兴能够把事情弄清楚 但是,我尝试使用Postgres在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
\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的不同方法: