【问题标题】:Syntax error in "psql" , command not get executed“psql”中的语法错误,命令未执行
【发布时间】:2021-02-08 17:59:38
【问题描述】:

我正在使用 timescaledb。

我关注的文档是Using PostgreSQL's COPY,用于将数据从 csv 文件迁移到 timescale db。 csv 文件的名称是 test.csv

我创建了名为 test 的数据库,表的名称是 test1。根据 timescaledb 文档,表是一个超表。

表格的结构和csv文件的结构是一样的。

在 cmd 中执行以下命令时,除了在控制台命令 test-# 中添加 - 符号之外,我没有得到任何结果

psql -d test -c "\COPY test1 FROM C:\Users\DEGEJOS\Downloads\test.csv CSV"

如果我在命令后面加上; psql -d test -c "\COPY test1 FROM C:\Users\DEGEJOS\Downloads\test.csv CSV"; 第 1 行出现语法错误。

如何解决此错误并将数据从 csv 文件插入到 db。

【问题讨论】:

    标签: postgresql csv syntax-error psql timescaledb


    【解决方案1】:

    您尝试在psql 会话中运行psql\COPY,因此在第二次调用中出现错误,因为SQL 中不存在psql 关键字。 psql 是一个可执行文件。

    要遵循 Timescale 的说明,您需要直接在 CMD 中调用该命令。即,调用:

    psql -d test -c "\COPY test1 FROM C:\Users\DEGEJOS\Downloads\test.csv CSV"
    

    如果您在屏幕截图中的C:\Users\DEGEJOS 中,它将如下所示:

    C:\Users\DEGEJOS\psql -d test -c "\COPY test1 FROM C:\Users\DEGEJOS\Downloads\test.csv CSV"
    

    【讨论】:

    • 我尝试直接在 CMD 中运行命令。从您提到的 postgresql / db 退出后。 CMD 抛出消息“'C:\Users\DEGEJOS\psql' 不是内部或外部命令、可运行程序或批处理文件。”
    • 你需要在 CMD 中写:psql -d test -c "\COPY test1 FROM C:\Users\DEGEJOS\Downloads\test.csv CSV",而你在C:\Users\DEGEJOS\ 。即,与您在屏幕截图中所做的方式相同,但与 psql 的参数不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2023-03-18
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多