oracle 將一個數據庫(A)的表導入到另一個數據庫


1. oracle 將一個數據庫(A)的表導入到另一個數據庫  concat沒有mysql的好使   

2. 解決需求:通過建表的形式,將數據庫A的表結構,在另一個數據庫中創建

--查詢表字段
select * from all_tab_columns WHERE  TABLE_NAME=='用戶表名'

--拼接建表sql語句
SELECT
    CONCAT(
        'CREATE TABLE  "ZHILICENG".',
        CONCAT(
            concat(
                '"',
            concat( TABLE_NAME, '"' )),-- 表名加""
            concat(
                ' (',
                concat(
                    ' ',
                    concat(
                        wm_concat (
                            CASE-- 這里根據不同字段生成不同的默認值
                                
                                WHEN column_name = 'ID' THEN -- 如果column_name為id則加一個自動生成id函數  並且不為null
                                '"' || column_name || '"' || ' ' || DATA_TYPE || '(' || DATA_LENGTH || ') DEFAULT sys_guid () NOT NULL' 
                                WHEN column_name = 'ADD_DATE' THEN -- 如果column_name為ADD_DATE則加一個自動當前時間 
                                '"' || column_name || '"' || ' ' || DATA_TYPE || '(' || DATA_LENGTH || ') DATE DEFAULT SYSDATE ' 
                                ELSE '"' || column_name || '"' || ' ' || DATA_TYPE || '(' || DATA_LENGTH || ')'  --否則拼接字段名、字段類型、字段大小
                            END 
                            ),
                            ')' 
                        ) 
                    ) 
                ) 
            ) 
        ) AS createTable 
    FROM
        all_tab_columns 
    WHERE
        TABLE_NAME IN ( 
        -- 查詢原始曾現有的表  而治理層不存在的表
        SELECT TABLE_NAME FROM all_tables WHERE owner = 'YUANSHICENG' AND TABLE_NAME NOT IN ( SELECT TABLE_NAME FROM all_tables WHERE owner = 'ZHILICENG' ) 
        ) 
GROUP BY
    TABLE_NAME

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM