为啥greenplum不能在不同的模式中创建相同的表名
Posted
技术标签:
【中文标题】为啥greenplum不能在不同的模式中创建相同的表名【英文标题】:why greenplum can not create same table name in different schema为什么greenplum不能在不同的模式中创建相同的表名 【发布时间】:2016-07-22 08:20:35 【问题描述】:我想在不同模式的greenplum中创建相同的外部表,但结果是错误:关系“my_external_table_name”已经存在
click check the picture: this is before create external table
click check the picture: this is after create table
为什么我之前的表格消失了?
【问题讨论】:
请分享导致错误的语句。 我的问题更新了,你可以看到我上传的图片 【参考方案1】:首先创建架构
gpadmin=# create schema foo;
gpadmin=# create schema bar;
然后在模式中创建外部表
gpadmin=# CREATE EXTERNAL TABLE foo.fre2(
ngram text,
year int4,
match_count int4,
page_count int4,
volume_count int4)
LOCATION ('gpfdist://mdw:8080/dat.txt')
FORMAT 'TEXT' (DELIMITER E'\t')
LOG ERRORS INTO load_e_fre2 SEGMENT REJECT LIMIT 500 rows;
gpadmin=# CREATE EXTERNAL TABLE bar.fre2(
ngram text,
year int4,
match_count int4,
page_count int4,
volume_count int4)
LOCATION ('gpfdist://mdw:8080/dat.txt')
FORMAT 'TEXT' (DELIMITER E'\t')
LOG ERRORS INTO load_e_fre2 SEGMENT REJECT LIMIT 500 rows;
您应该能够看到表存在于它们各自的命名空间中
gpadmin=# select c.relnamespace, c.relname, e.* from pg_class c join pg_exttable e on e.reloid = c.oid where c.relname = 'fre2';
relnamespace | relname | reloid | location | fmttype | fmtopts | command | rejectlimit | rejectlimittype | fmterrtbl | encoding | writable
--------------+---------+--------+------------------------------+---------+----------------------------------------+---------+-------------+-----------------+-----------+----------+----------
2200 | fre2 | 57474 | gpfdist://mdw:8080/dat.txt | t | delimiter ' ' null '\N' escape '\' | | 500 | r | 49164 | 6 | f
57403 | fre2 | 57500 | gpfdist://mdw:8080/dat.txt | t | delimiter ' ' null '\N' escape '\' | | 500 | r | 49164 | 6 | f
57404 | fre2 | 57526 | gpfdist://mdw:8080/dat.txt | t | delimiter ' ' null '\N' escape '\' | | 500 | r | 49164 | 6 | f
(3 rows)
gpadmin=# select nspname from pg_namespace where oid in (2200, 57403, 57404);
nspname
---------
public
foo
bar
(3 rows)
【讨论】:
它对我不起作用,我以前的表消失了..在我的情况下不能存在具有相同表名的不同架构...我已经更新了我的问题,你可以检查一下更多详情【参考方案2】:根据前缀“通知”,以下消息不是错误,它只是通知用户在 CREATE 语句中定义的错误表不存在,因此它正在为您创建该表。
Notice: Error table "request_histories_external_error" does not exist. Autogenerating and error table with the same name
【讨论】:
以上是关于为啥greenplum不能在不同的模式中创建相同的表名的主要内容,如果未能解决你的问题,请参考以下文章