问题描述
在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'”
有人可以帮我吗?
解决方法
您在您的表定义缺少一些东西。您忘记“外部”和“表”。
import logging
logger = logging.getLogger('django.request')
logger.setLevel(logging.ERROR)
注:gphdfs已被弃用,你应该使用PXF或gpfdist代替
接下来,你只需要使用周围的位置值双引号。
CREATE READABLE EXTERNAL TABLE table_a
(
date_inic date,func_name varchar,q_session bigint
)
LOCATION(:location)
FORMAT 'TEXT' (DELIMITER '|');
和从bash中,你可以CONCAT串在一起了。
[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