【问题标题】:Creating Batch Files with PostgreSQL \copy Command in Jetbrains Datagrip在 Jetbrains Datagrip 中使用 PostgreSQL \copy 命令创建批处理文件
【发布时间】:2021-07-03 20:51:06
【问题描述】:

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

我正在管理、参考文档,并且很高兴能够解决这些问题。

但是,我正在尝试使用 Postgres \copy 命令通过批处理文件将 CSV 数据摄取到表中。 Datagrip 将执行此命令而不会出错,但不会填充任何数据。

这是我的语法,在控制台视图中编写和运行:

\copy tablename from 'C:\Users\username\data_file.txt' WITH DELIMITER E'\t' csv; 

请注意,数据以制表符分隔并存储在 .txt 文件中。

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

【问题讨论】:

标签: postgresql datagrip


【解决方案1】:

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

我怀疑 Datagrip 调用了psql,所以它不能使用\copy 或任何其他“反斜杠命令”。

您可能必须使用Datagrip's import facilities。或者你开始使用psql

【讨论】:

    【解决方案2】:

    好的,但是 SQL COPY 命令https://www.postgresql.org/docs/12/sql-copy.html 呢?

    如何使用 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
    

    编辑: 我知道为什么。实时调频! -_-

    带有文件名的COPY 指示PostgreSQL 服务器直接读取或写入文件。该文件必须可由 PostgreSQL 用户(服务器运行的用户 ID)访问,并且必须从服务器的角度指定名称。

    对不起.....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多