相关疑难解决方法(0)

如何在 PostgreSQL 中使用 VALUES 创建临时表

我正在学习 PostgreSQL 并试图弄清楚如何创建一个临时表或一个WITH可以用来代替常规表的声明,以用于调试目的。

我查看了CREATE TABLE的文档,它说VALUES可以用作查询,但没有给出示例;VALUES其中链接的条款的文档也没有示例?

所以,我写了一个简单的测试如下:

DROP TABLE IF EXISTS lookup;
CREATE TEMP TABLE lookup (
  key integer,
  val numeric
) AS
VALUES (0,-99999), (1,100);
Run Code Online (Sandbox Code Playgroud)

但是 PostgreSQL (9.3) 抱怨

“AS”处或附近的语法错误

我的问题是:

  1. 我怎样才能修正上面的说法?

  2. 我如何调整它以用于WITH block?

提前致谢。

postgresql syntax

54
推荐指数
4
解决办法
12万
查看次数

使用 CREATE TABLE AS SELECT 如何指定 WITH 条件 (CTE)?

PostgreSQL 中有一个旧的和不推荐使用的命令,它早于CREATE TABLE AS SELECT(CTAS)称为SELECT ... INTO .... FROM,它支持WITH子句/公共表表达式(CTE)。所以,例如,我可以做到这一点..

WITH w AS (
  SELECT *
  FROM ( VALUES (1) ) AS t(x)
)
SELECT *
INTO foo
FROM w;
Run Code Online (Sandbox Code Playgroud)

但是,我不能这样做..

WITH w AS (
  SELECT *
  FROM ( VALUES (1) ) AS t(x)
)
CREATE TABLE foo AS
SELECT * FROM w;
Run Code Online (Sandbox Code Playgroud)

或者,我得到

ERROR:  syntax error at or near "CREATE"
LINE 5: CREATE TABLE foo AS
Run Code Online (Sandbox Code Playgroud)

我将如何使用标准化的 CTAS 语法来做到这一点。

postgresql syntax cte sql-standard ctas

10
推荐指数
1
解决办法
1万
查看次数

Postgresql:当在 postgresql 中删除临时表时

我正在将数据插入临时表并且它工作正常。下面是相同的 psedo sql 代码

with cte as(

)
select * 
into temp_table
from cte
Run Code Online (Sandbox Code Playgroud)

使用这种方法,数据可以非常快地插入临时表中。根据我的知识,一旦会话关闭,临时表就会被删除。但是即使关闭了我的 pgadmin 连接,我的临时表也不会被删除。

我的问题是 postgresql 中的临时表是自动删除还是保留在磁盘空间上,直到我们删除它们。

问候,

桑杰·萨伦赫

postgresql temporary-tables

6
推荐指数
2
解决办法
1万
查看次数

PostgreSQL:为什么 CREATE TABLE AS 比 CREATE ... INSERT INTO 快?

以下是同一事物的两种不同语法。

  1. 带有COPY TABLE AS SELECT( CTAS)。

    CREATE TABLE main
    AS
      SELECT *
      FROM other;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 作为单独的语句CREATE TABLEINSERT INTO

    CREATE TABLE main (like other);
    
    INSERT INTO main
    SELECT *
    FROM other;
    
    Run Code Online (Sandbox Code Playgroud)

我观察到的CTAS比明显快CREATE TABLE.. INSERT。第一个需要 20 秒才能完成执行。第二个语法二需要 1 分 15 秒才能完成执行。

差异的原因可能是什么?

postgresql insert write-ahead-logging bulk-insert ctas

5
推荐指数
1
解决办法
3609
查看次数