我必須爲表格計劃轉換。表結構是一樣的東西大量行的轉換
COULMN1 CHAR(1)
COLUMN2 VARCHAR2(20)
COLUMN3 DATE
我需要此錶轉換根據以下邏輯:
- IF COLUMN2 = 'XXX' 然後更新COLUMN1 = 'X'
的要更新的行數很大(以百萬爲單位)。所以,我無法做出簡單的更新聲明,因爲我有限的時間來執行此活動。 到目前爲止,我有一個想法來創建一個具有轉換值的臨時表;刪除主表並用原始表重命名臨時表。
是否有任何身體有任何不同的想法?
我必須爲表格計劃轉換。表結構是一樣的東西大量行的轉換
COULMN1 CHAR(1)
COLUMN2 VARCHAR2(20)
COLUMN3 DATE
我需要此錶轉換根據以下邏輯:
的要更新的行數很大(以百萬爲單位)。所以,我無法做出簡單的更新聲明,因爲我有限的時間來執行此活動。 到目前爲止,我有一個想法來創建一個具有轉換值的臨時表;刪除主表並用原始表重命名臨時表。
是否有任何身體有任何不同的想法?
我不是數據庫專家&這是我的想法。
帶有XXX的行比其他行更多嗎?
如果是這樣,請創建一個表以轉儲XXX行並將列1設置爲X.
插入不是XXX的其餘行。
截斷舊錶。
在新表格中插入新內容。
DB專家可以批評/評論這種方法。
你可以嘗試做他們一點的時間,例如: -
UPDATE atable
SET column1 = 'X'
WHERE (column1 != 'X' OR column1 IS NULL)
AND column2 = 'XXX'
AND ROWNUM <= 100000;
這將更新前100,000列的必要。將數字更改爲品味。提交,沖洗並重復,直到它顯示「0行已更新」。
如果用戶想在轉換過程中看到新數據,可以使用視圖。
重命名您的表,例如[table_old],並創建一個將更新值複製到的新表[table_new]。使用table [table]的原始名稱創建一個視圖,該表格返回[table_new]的所有行和[table_old]中的所有行,而不是[table_new]中的所有行。
一旦所有的數據已被轉換,刪除舊錶和視圖,然後將[table_new]重命名爲原始表名稱。
希望這是一個明確的描述!