最近工作需求,需求将SQLServer 中的表及数据移转到Oracle数据库
简述一下遇到的问题及解决方案,问题很多,整理一下,后续可能会慢慢更新
1. 时间类型不同,转到Oracle 中后会显示为 TIMESTAMP(6),需改为date 类型
Oracle select a.table_name,b.COLUMN_NAME,b.DATA_TYPE from user_tables a left join user_tab_columns b on a.table_name=b.table_name where b.DATA_TYPE='TIMESTAMP(6)'; SQL Server select b.name ColumnName,c.name SystemTypeName,a.name tablename,b.precision,b.scale from sys.tables a left join sys.columns b on a.object_id=b.object_id left join sys.types c on b.system_type_id=c.system_type_id where c.name='date'; alter table EQUBASEINFO modify STARTDATE Date;//默认类型修改
2. 写入数据时,发现默认值为空,
Oracle select a1.table_name,a1.COLUMN_NAME,b1.data_default from ( select a.table_name,b.COLUMN_NAME,b.DATA_TYPE,b.NULLABLE --,c.data_default from user_tables a left join user_tab_columns b on a.table_name=b.table_name -- WHERE a.TABLE_name='' ) a1 right join (select a.table_name,a.COLUMN_NAME,a.data_default from (select * from USER_TAB_COLS where data_default is not null) a) b1 on a1.table_name=b1.table_name where 1=1 -- and a1.TABLE_name=''; alter table EQUBASEINFO modify (STARTDATE default sysadte); //默认值修改 SQL的查询语句没保存下来,有需要的可以自己百度