oracle庫中所有表一次性轉hive表結構指令碼

2021-09-26 13:48:12 字數 2107 閱讀 5486

select to_char(substr(table_prefix || col_strs || table_subfix, 1, 4000)) con

from (select n.table_prefix,

wm_concat(m.col_str) as col_strs,

n.table_subfix

from (select a.table_name,

'create table if not exists ' || lower(a.table_name) || '(' as table_prefix,

') comment ''' || b.comments || ''';' as table_subfix

from user_tables a, user_tab_comments b

where a.table_name = b.table_name

order by a.table_name) n,

(select c.table_name,

c.column_name || case

when c.data_type in ('char',

'nchar',

'varchar',

'varchar2',

'nvarchar2',

'date',

'timestamp',

'timestamp with time zone',

'timestamp with local time zone',

'interval year to moth',

'interval day to second',

'blob',

'clob',

'nclob',

'bfile',

'raw',

'long raw') then

' string '

when c.data_type = 'integer' then

' bigint '

when c.data_type = 'number' then

(case

when c.data_scale is not null and c.data_scale <> 0 then

' decimal(' || c.data_precision || ',' ||

c.data_scale || ') '

when c.data_precision < 3 then

' tinyint '

when c.data_precision < 5 then

' smallint '

when c.data_precision < 10 then

' int '

else

' bigint '

end)

when c.data_type in

('binary_float', 'binary_double', 'float') then

' double '

else

' string '

end || 'comment ''' ||

regexp_replace(t.comments,

'[' || chr(10) || chr(13) || chr(9) ||

chr(32) || ']',

'') || '''' as col_str

from user_tab_cols c, user_col_comments t

where c.table_name = t.table_name

and c.column_name = t.column_name) m

where n.table_name = m.table_name

group by n.table_prefix, n.table_subfix)

1、將oracle_to_hive.sql中的內容拷貝到oracle中執行,執行的輸出結果儲存下來,建議為hsql檔案(結果即為hive建立表語法)

2、在hue介面上執行這些語法,或者通過命令列beeline -f 執行的hsql檔案

oracle_to_hive.sql可自行優化和修改

一次性備份SQL Server中所有的資料

備份處理的儲存過程 set ansi nulls on set quoted identifier on go 備份所有資料庫 備份的檔名為資料庫名 日期 bak 將所有的使用者資料庫 或指定的資料庫列表 備分到指定的目錄下.呼叫示例 備份所有使用者資料庫 exec p backupdb bkpat...

一次性更改資料庫中所有使用者表名稱

從網上下了乙個系統,要想把資料庫和專案中用到的整合到一起,不過會有重名發生 想把所有表都加上乙個字首,不過乙個乙個改又麻煩.就寫了這個東西 declare currt cursor forselect name from sysobjects where xtype u and name dtpro...

一次性退出所有activity

可以利用清理歷史棧的方法,來巧妙關閉所有activity,首先用乙個設定為不可見的activity a來啟動程式,這個activity a的作用只是用來墊棧底,只有啟動和退出程式才會用到這個activity,而你需要退出的時候,只需要跳轉至這個activity a 並讓a finish自己就可以實現...