我试图删除存储在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删除它?
对我来说,最好的解决方案是重命名该表,我可以保存该表中的数据。
答案 0 :(得分:1)
您无法使用空名称创建表格:
tgr=# create table "" ();
ERROR: zero-length delimited identifier at or near """"
LINE 1: create table "" ();
但是,您可以创建一个包含大量空格的表格,包括换行符:
create table "
" ();
使用此类表:
information_schema.tables
如果上一次失败,您可以尝试直接更新pg_class
。如果您有表OID,请尝试:
update pg_class set relname = 'test'::name where oid = <<YourOID>>;