2014-06-10 45 views
0

想象一下,我有一個填充表T_old與給定的模式(可以說是int,浮點數,符號等的混合)我現在想創建一個新的空/空表T_new與T_old具有完全相同的架構。我該怎麼做呢?最後,我希望這兩個操作都是有效的:T_old uj T_new和T_new uj T_old。有什麼建議麼?KDB用預先存在的表的模式創建空表

回答

5

你可以做T_new:0#T_old。這樣你就保留了舊模式的確切模式和列類型。

然後您的操作T_old uj T_newT_new uj T_old應該產生相同的結果。

+0

謝謝!我認爲這是我正在尋找的。 – bigO6377

+2

給他一個很好的綠色勾號:) –

0

有一些黑客可以通過它來複製表格的簡單模式。通過簡單的架構我的意思是你不能得到確切的架構。

因此,從一張表中取0行並將其複製到新表(變量)中是一種破解。實際上,我們不是在複製模式。

WAY1:以運營商:newtbl:0# oldtbl

Way2:選擇命令:newtbl:select from oldtbl where i=-1

兩者都不過是從舊TBL取0行。

問題:但是這不會複製架構中的所有屬性。因此,例如,如果您在舊錶中的某個列上對屬性進行了排序,則不會將其複製到新的表架構。

+0

好點的重新屬性,但它是有道理的,他們會被丟棄國際海事組織,因爲你不能沒有數據的屬性,0#有效地做到這一點。你仍然會爲'upsert'等類型檢查增加值,你可以在 – JPC

+0

之後應用屬性。你是對的。我提到的排序屬性只是爲了解釋我的觀點。我還沒有測試過其他屬性,所以不知道通過這些方式複製模式是否會對它們起作用。 – Rahul

+0

Gotcha。是的,我沒有真正檢查其他屬性,並假設這些屬性也會發生,但是猜測屬性的屬性並不完全一致(特別是當您考慮像'asc'這樣的東西將一個向量賦值給'\'s #'屬性,但'distinct'不會自動爲''''''''屬性賦值) – JPC

相關問題