Oracle to SQL Server create table statements

From WickyWiki


This is an example to generate SQL Server create table statements from an Oracle database.

select 'create table '|| owner ||'.[' || table_name || '] (' as sql_table_name
  , LISTAGG('[' || column_name || '] '
    || CASE 
        WHEN data_type='BLOB' THEN ''
        WHEN data_type='DATE' THEN 'datetime'
        WHEN data_type='FLOAT' THEN ''
        WHEN data_type='NUMBER' THEN 'decimal('||nvl(data_precision,38)||','||nvl(data_scale,0)||')'
        WHEN data_type like 'TIMESTAMP%' THEN 'timestamp'
        WHEN data_type='CLOB' THEN 'nvarchar(max)'
        WHEN data_type='CHAR' THEN 'nvarchar(' ||data_length|| ')'
        WHEN data_type='NVARCHAR2' THEN 'nvarchar(' ||data_length|| ')'
        WHEN data_type='VARCHAR2' THEN 'nvarchar(' ||data_length|| ')'
        ELSE '?'
        END
      ,', ') WITHIN GROUP( ORDER BY column_id ) AS sql_all_columns
      , ');' as sql_close
from all_tab_columns
where owner='SCHEMA'
--	and table_name in ('','')
group by owner, table_name
order by owner, table_name
;

See also