数据迁移时在数据库遇到的坑爹问题
数据库遇到的坑爹问题
最近做系统升级,对旧数据库数据进行新旧替换和迁移数据操作,发现的一些坑爹问题,做出些总结
数据库数据迁移,涉及mysql、Oracle数据库;
问题如下:
1,Oracle中不识别’’;空串必须在引号中间加空格’ ‘;另外不等于空串可写成:!=’ ’ 或者 <>‘ ’;
2,Oracle中select复杂的查询语句带的, 必须加表的别名,否则会报错;很坑的,明明只有一张表,只是对查询展示字段进行拓展新增两个字段就会报错;
例:
select * ,‘0’ newStatus from userTable; 错;
select t., ‘0’ newStatus from userTable t ; 对;
3,Oracle中查询排序语句 order by 后面不能连续写两个字段【不知道是我写的不对还是不知道怎么写,但是在mysql中却完全OK,无语了!】;
4,Oracle中建表语句加索引,不同表的索引字段也不能相同,否则会报冲突;常出现在创建备份表,或临时备份表中;
5,备份数据drop掉表之前,最好写一份备份表语句(表名随时间动态拼接),以免造成数据丢失;
begin
execute immediate ‘create table CITY_’||to_char(sysdate, ‘yyyymmddHHmmss’)||’ as select * from wb_user’;
end;
6,mysql中再drop或者清除表数据之前,最好先备份一份表数据,创建一个随时间动态生成表名的建表语句;
范例:SET @pddl = concat(‘select * from user’, @var);
PREPARE stmt FROM @pddl;/定义预处理语句/
EXECUTE stmt;/执行预处理语句/
DEALLOCATE PREPARE stmt;/释放预处理语句/
实例:
– 生成表名
set @sql_get_name = concat(“CITY_”, date_format(NOW(),’%y%m%d%H%i%s’));
– 建表
set @sql_create_table = concat(
'CREATE TABLE ',@sql_get_name,
“(
CITY_ID
bigint(30) NOT NULL COMMENT ‘城市ID’,
CITY_NAME
varchar(30) NOT NULL COMMENT ‘城市名称’,
PROVINCE_ID
varchar(8) NOT NULL COMMENT ‘省ID’,
CITY_SHORT_NAME
varchar(20) DEFAULT NULL COMMENT ‘简称’,
ORDER_ID
bigint(10) DEFAULT NULL COMMENT ‘排序(从1开始的正整数,NULL表示不排序,各level互不影响)’,
PRIMARY KEY (CITY_ID
)
) ENGINE=InnoDB DEFAULT CHARSET=UTF-8 COMMENT=‘城市表’”);
PREPARE sql_create_table FROM @sql_create_table;
EXECUTE sql_create_table;
– 插入数据
set @sql_insert_data = concat(
“INSERT INTO “,@sql_get_name,”(SELECT * FROM CITY)”);
PREPARE sql_insert_data FROM @sql_insert_data;
EXECUTE sql_insert_data;
DEALLOCATE PREPARE sql_create_table;/释放预处理语句/
DEALLOCATE PREPARE sql_insert_data;/释放预处理语句/
或者写成函数调用:
create procedure TempTableData(
in tableName VARCHAR(1000),
in tableBuild VARCHAR(300000),
in tableData VARCHAR(1000)
)
begin
set @sql_get_name = concat(tableName, date_format(NOW(),’%y%m%d%H%i%s’));
set @sql_create_table = concat(
'CREATE TABLE ',@sql_get_name,tableBuild);
PREPARE sql_create_table FROM @sql_create_table;
EXECUTE sql_create_table;
– DEALLOCATE PREPARE sql_create_table;/释放预处理语句/
set @sql_insert_data = concat(
"INSERT INTO ",@sql_get_name,tableData);
PREPARE sql_insert_data FROM @sql_insert_data;
EXECUTE sql_insert_data;
– DEALLOCATE PREPARE sql_insert_data;/释放预处理语句/
end;
CALL TempTableData(“CITY_”,"(
CITY_ID
bigint(30) NOT NULL COMMENT ‘城市ID’,
CITY_NAME
varchar(30) NOT NULL COMMENT ‘城市名称’,
PROVINCE_ID
varchar(8) NOT NULL COMMENT ‘省ID’,
CITY_SHORT_NAME
varchar(20) DEFAULT NULL COMMENT ‘简称’,
ORDER_ID
bigint(10) DEFAULT NULL COMMENT ‘排序(从1开始的正整数,NULL表示不排序,各level互不影响)’,
PRIMARY KEY (CITY_ID
)
) ENGINE=InnoDB DEFAULT CHARSET=UTF-8 COMMENT=‘城市表’","(SELECT * FROM CITY)");
!!!这里的函数TempTableData(v1,v2,v3)不能重复调用,只能重写一个重写调用,包括begin/end语句;
7,oracle中引用脚本语句,中出现了begin和end操作,要在end;后面转行加上\ 反斜杠进行提交操作;’
8,orcale中进行数据回滚操作时,会出现部分表无法正常被drop掉。可以先对要执行drop操作的表进行delete或者truncate操作清掉数据,然后进行commit操作,再进行drop操作即可正常;’
以上仅是个人总结,仅供参考!具体以实际操作验证为准!!
数据迁移时在数据库遇到的坑爹问题相关推荐
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...
- Django 应用分库,数据迁移成功,数据库没有生成表
Django 应用分库,数据迁移成功,数据库没有生成表 背景:不同应用对应不同数据库,在迁移数据成功后,数据库没有生成表 Django 官网:https://docs.djangoproject.co ...
- EntityFrameWork数据迁移——暨改变数据库结构的方法
EntityFramework在对数据迁移时的支持并不好,现在到了6.3版本以后,Model-First的方法也被抛弃,而Code-First的方法更多的是针对首次建立数据模型的情况.一旦想要修改现有 ...
- mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?
原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...
- mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
- mysql升级后将旧数据迁移到新 数据库中
mysql升级后将旧数据迁移到新 数据库中 1.将原来数据库进行导出成.sql文件 例:StudentSql.sql 2.进入新数据库的bin目录下 复制bin目录 3.cmd进入bin目录下(需管理 ...
- DM 数据迁移工具——DTS(MySQL数据迁移到DM8数据库 Windows环境)
DM 数据迁移工具--DTS MySQL数据迁移到DM8数据库 Windows环境 DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM.DM 到 DM.文件迁移到 DM 以及 DM 迁 ...
- 使用java做mysql数据迁移时遇到的两个问题
有个数据迁移的需求,需要将A数据库的数据迁移至数据库B. 我以为直接生成mysqldump脚本再跑一下就行了,但是发现并不行. 问题出在java.lang.Runtime类上. Runtime.exe ...
- 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码
查看Oracle数据源编码: 执行: SELECT Userenv('language') FROM dual; 结果:AMERICAN_AMERICA.US7ASCII mysql 目标库 为ut ...
最新文章
- 06_一对一和一对多
- python列表、集合、字典、元祖用途_Python-函数作用域和集合列表字典元祖
- 关于Qt QFileDevice::map()接口的一些学习记录
- tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...
- LeetCode:二叉树相关应用
- java c语言 for_Java能写C语言编译器吗
- 阿里巴巴、支付宝员工都在用的知识管理工具,究竟有何特别?
- 集群、RAC和MAA
- 任何举动之前,先思考,思考,再思考
- 图神经网络(GNN)教程 – 用 PyTorch 和 PyTorch Geometric 实现 Graph Neural Networks
- 该如何清理手机的垃圾?
- [3-7]xp系统美化主题包下载每日更新【heizt整理】
- phpstudy 自定义php,phpstudy 自定义php版本
- java动态生成pdf 合并两个pdf文件功能三
- 北京亿阳信通Oracle笔试题
- ntp服务器安装和配置文件,NTP服务的安装、配置和使用
- 上海公积金网上提取_为什么提取上海公积金租房这么简单?
- Error: rendered manifests contain a resource that already exists.
- athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?
- 【JS】js中的和符号,或符号
热门文章
- 【520大礼包】《Scratch趣味编程进阶——妙趣横生的数学和算法》免费送啦!
- Exceptional C++ 读书笔记
- 大数据行业现状分析和最新行业动态
- Shell 中expr的使用
- 吃PHP小孩智力好,别老是说自己孩子笨,你要经常给他吃这个,开发智力头脑更聪明!...
- xp系统远程不上服务器,WindowsXP 连接Windows 2003远程桌面 本地打印机 映射不过去 解决办法...
- marlin2.0.5.4配置详解
- O-神、上帝以及老天爷
- 论文答辩PPT制作攻略
- Android contribution workflow