【问题标题】:Concat variable with a string in location parameter in a create statement?在创建语句中使用位置参数中的字符串连接变量?
【发布时间】:2021-01-07 13:21:54
【问题描述】:

在 Greenplum 中,我需要创建一个带有动态位置参数的外部表。举个例子:

CREATE READABLE TABLE_A(
date_inic date,
func_name varchar,
q_session bigint
)
LOCATION(:location)
FORMAT 'TEXT' (DELIMITER '|');

但在 :location 参数中,我需要将它与固定字符串连接起来。我试过了:

LOCATION (:location || '123')

但是我得到一个语法错误,否则在 select 语句中它可以正常工作。我正在插入 :location 值,例如:“'gphdfs://teste:1010/tmp'”

谁能帮帮我?

【问题讨论】:

    标签: ddl greenplum


    【解决方案1】:

    您的表定义中缺少一些内容。您忘记了“外部”和“表”。

    CREATE READABLE EXTERNAL TABLE table_a
    (
    date_inic date,
    func_name varchar,
    q_session bigint
    )
    LOCATION(:location)
    FORMAT 'TEXT' (DELIMITER '|');
    

    注意:gphdfs 已被弃用,您应该改用 PXF 或 gpfdist。

    接下来,您只需在位置值周围使用双引号即可。

    [gpadmin@mdw ~]$ psql -f example.sql -v location="'gpfdist://teste:1010/tmp'"
    CREATE EXTERNAL TABLE
    [gpadmin@mdw ~]$ psql 
    psql (9.4.24)
    Type "help" for help.
    
    gpadmin=# \d+ table_a 
                              External table "public.table_a"
      Column   |       Type        | Modifiers | Storage  | Stats target | Description 
    -----------+-------------------+-----------+----------+--------------+-------------
     date_inic | date              |           | plain    |              | 
     func_name | character varying |           | extended |              | 
     q_session | bigint            |           | plain    |              | 
    Type: readable
    Encoding: UTF8
    Format type: text
    Format options: delimiter '|' null '\N' escape '\'
    External options: {}
    External location: gpfdist://teste:1010/tmp
    Execute on: all segments
    

    在 bash 中,您也可以将字符串连接在一起。

    loc="gpfdist://teste"
    port="1010"
    dir="tmp"
    location="'""$loc"":""$port""/""$dir""'"
    
    psql -f example.sql -v location="$location"
    

    【讨论】:

    • 谢谢,乔恩!但是这种连接不能直接在 SQL 语句中进行吗?仅在 bash 中?
    • psql 确实支持 :location:port 并且您传入多个变量但我无法使其正常工作,因为您还需要传入单引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多