【问题标题】:Why PSQL meta command cannot be execute at mutliline为什么不能在多行执行 PSQL 元命令
【发布时间】:2022-01-17 12:11:15
【问题描述】:

刚发现\COPY命令只能在一行执行,多次尝试this答案的查询。 这种方式对于编写长查询似乎很不友好。而且不容易找出原因。 我不认为这是一个错误,那么为什么。

【问题讨论】:

  • 为什么?因为它是这样实现的。 It is documented though "解析参数在行尾停止,或者在找到另一个未引用的反斜杠时停止。...但无论如何,元命令的参数不能继续超出行尾。 "

标签: postgresql psql


【解决方案1】:

从这里psql,如果您要复制到文件中:

获得与\copy ... to 相同结果的另一种方法是使用SQL COPY ... TO STDOUT 命令并用\g 文件名或\g |程序终止它。与 \copy 不同,此方法允许命令跨越多行;也可以使用变量插值和反引号展开。

对于从文件中复制,借用 pg_dump 所做的事情:

CREATE TABLE csv_test (col1 integer, col2 integer);

cat csv_test.csv 

COPY 
  csv_test 
FROM 
 stdin WITH CSV;
"19","9"
"19","5"
"19","5"
"19","15"
"19","5"

\i ~/csv_test.csv 
COPY 5

select * from csv_test ;
 col1 | col2 
------+------
   19 |    9
   19 |    5
   19 |    5
   19 |   15
   19 |    5

【讨论】:

    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2023-03-18
    • 2020-09-06
    相关资源
    最近更新 更多