在PostgreSQL中删除带有空名称的表

时间:2014-02-18 09:43:25

标签: sql postgresql drop-table

我试图删除存储在PostgreSQL 8.3.8 32位中的一个表。

奇怪的是,我的桌子没有名字,它是空的。我在哪里:

SELECT * FORM pg_catalog.pg_tables;

它说我的tablename名称为null。 当我尝试删除我的表时:

DROP TABLE sde. ;

其中sde是我的schemaname, 出现错误,告诉我语法错误。

ERROR: syntax error at or near ";"
LINE 1:drop table sde. ;

有没有办法删除该表?

我也试过了

DROP TABLE sde.'';

但仍然出现错误。

我的桌子有OID。是否可以通过OID删除它?

对我来说,最好的解决方案是重命名该表,我可以保存该表中的数据。

1 个答案:

答案 0 :(得分:1)

您无法使用空名称创建表格:

tgr=# create table "" ();
ERROR:  zero-length delimited identifier at or near """"
LINE 1: create table "" ();

但是,您可以创建一个包含大量空格的表格,包括换行符:

create table "               

                   " ();

使用此类表:

  1. information_schema.tables
  2. 中找到它
  3. 使用双引号(“”)
  4. 在某些命令中复制/粘贴表名

    如果上一次失败,您可以尝试直接更新pg_class。如果您有表OID,请尝试:

    update pg_class set relname = 'test'::name where oid = <<YourOID>>;