oracle 将一个数据库(A)的表导入到另一个数据库197

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
原文地址:https://www.cnblogs.com/Ai-Hen-Jiao-zhi/p/13932434.html