2013-07-13 18 views
9

Aslında bunu nasıl yaptığımı bilmiyorum ama postgres DB'mde isimsiz bir tablo var. Böyle bir tablonun sorunlu olduğunu söylemek gereksizdir, silinmez, hiçbir şekilde değiştiremezsiniz. İşte Postgresql'deki sorunlu isimsiz tablo

o pgAdmin kaşif nasıl göründüğünü bir resmi: bildiriminden gelince

nameless table

, bu böyle gider:

CREATE TABLE 
(
    _id_ integer NOT NULL DEFAULT nextval('bu_b__id__seq'::regclass), 
    pt_utilisateur integer, 
    pt_date date, 
    lon double precision, 
    lat double precision, 
    CONSTRAINT PRIMARY KEY (_id_) 
) 

Yani, bir basit bir soru: nasıl Bu tabloyu silebilir (silmeye çalıştığından beri var olan ... adını kullanmıyor!)?

Saygılarımızla.

cevap

6

bu isim kodlama/font sorunları bunu yapabilirsiniz nedeniyle görüntülenebilir olmayan bir tablo hakkında DEĞİL ise:

  • sistem kataloglarından tablo OID'i belirleyin.
  • Sistem kataloglarında yeni bir tablo adı için geçici bir ad belirleyin. OID'yi tanımlayıcı olarak kullanın
  • Tabloyu yararlı bir şeye yeniden adlandırın (veya bırakın).

Tabii ki, veritabanına süper kullanıcı erişiminiz olduğunu varsayar. Sadece görüntülenebilir değil -

SELECT oid, relname FROM pg_class WHERE length(relname) <= 1; 

tablo bir isim olan herhangi bir sonuç alamazsanız: -

ilk adım kataloğundan OID'i belirler. Bu durumda sadece WHERE parçasını atlayın ve gözlerinizle bakın. -

İkinci adım

Sistem kataloğu değiştirin: Her durumda

UPDATE pg_class SET relname = 'foo' WHERE oid = /*OID from step 1*/; 

- burada bitmiyor, sen ilerlemesi gerekir.

Üçüncü adım - Birden fazla yerde (örneğin pg_type) içerisinde temizleme

PostgreSQL depolar tablo adını. Bazı araçlar buna bağlı olabilir. Bunu temizlemek için tablonun (ve dolayısıyla unrenamed malzemelerin) ya da resmi araçları kullanarak tabloyu yeniden adlandırmanız gerekir.

ALTER TABLE foo RENAME TO /*somthing real*/; 

veya

DROP TABLE foo; 

zamanki uyarıları

: Sen PostgreSQL dahili özelliklerine de munching edilir -

+0

Evet Sil! Bu tamamen çalışıyor, çok teşekkürler! – Akheloes

0

ı don :-) kendi sorumluluğunuzdadır bunu saçma şeyler yapmak ve ne yapmadığını 't PostgreSQL'i kullanıyoruz ama aşağıdaki adımlarla bu tabloyu silebilirsiniz tahmin:

  1. sql dökümü atın
  2. veritabanını
  3. dökümü o isimsiz tablo çıkarın ve geri yükleme sql dökümü
+0

"Dump veritabanı dump_", anlamı? – Akheloes

+0

@Gloserio, bu destek için http://www.postgresql.org/docs/8.1/static/backup.html – shweta

+0

@shweta Haha, PostgreSQL arkadaşına merhaba deme zamanı :) –