Oracle&SQL Server 表名、字段查询
最近工作需求,需求将SQLServer 中的表及数据移转到Oracle数据库
简述一下遇到的问题及解决方案,问题很多,整理一下,后续可能会慢慢更新
1. 时间类型不同,转到Oracle 中后会显示为 TIMESTAMP(6),需改为date 类型
1 2 3 4 5 6 7 8 9 10 11 | 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. 写入数据时,发现默认值为空,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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的查询语句没保存下来,有需要的可以自己百度 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步