2014-02-18 81 views
1

我想刪除存儲在PostgreSQL 8.3.8 32位中的一個表。刪除PostgreSQL中的空名稱表

奇怪的是,我的表沒有名稱,它是空的。我在哪裏:

SELECT * FORM pg_catalog.pg_tables; 

它說我的表名是空的。 當我試圖刪除我的表:

DROP TABLE sde. ; 

其中SDE是我SCHEMANAME,出現 錯誤,告訴我,有一個語法錯誤。

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

有沒有什麼辦法刪除該表?

我也試過出現

DROP TABLE sde.''; 

但還是錯誤。

我的表格有OID。有沒有可能通過OID刪除它?

對我來說最好的解決方案是重命名該表,以便我可以從該表中保存數據。

+0

對象名稱需要雙引號,而不是單個qutoes。嘗試:'drop table sde。「」;' –

+0

如果我插入雙引號,則會出現錯誤:'ERROR:零長度分隔標識符在或接近「」「」「 LINE 1:DROP TABLE sde。」「;' – user2919480

+2

也許你的tablename只包含空格? (所以它不是空的,但是例如一個或幾個空格) –

回答

1

不能創建空名稱表:

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

但是,您可以創建一個表有很多的空間,包括換行:

create table "    

        "(); 

要使用這樣的工作表中:

  1. information_schema.tables找到它
  2. 複製/粘貼某些命令中的表名使用雙引號(「」)

當以前失敗時,可以嘗試直接更新pg_class。如果您有表格OID,請嘗試以下操作:

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

我在'information_schema.tables'中找到它,它的名字看起來像這個''''。我複製了它並添加了雙引號:'DROP TABLE sde。「''」;'。但是出現錯誤告訴我'table'''「不存在'。 – user2919480

+0

我明白了。在9.1.9中沒問題:'create table sda。'''「(); drop table sda。「''」;'也許這是舊的PostgreSQL版本中的一些錯誤。 –

+0

您是否在pgAdmin中看到此表?如果是的話,那麼你可以從那裏重新命名''''表。右鍵單擊表名,然後單擊屬性。這也適用於我。 –

相關問題