数据库遇到的坑爹问题

最近做系统升级,对旧数据库数据进行新旧替换和迁移数据操作,发现的一些坑爹问题,做出些总结

数据库数据迁移,涉及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操作即可正常;’

以上仅是个人总结,仅供参考!具体以实际操作验证为准!!

数据迁移时在数据库遇到的坑爹问题相关推荐

  1. ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...

    如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...

  2. Django 应用分库,数据迁移成功,数据库没有生成表

    Django 应用分库,数据迁移成功,数据库没有生成表 背景:不同应用对应不同数据库,在迁移数据成功后,数据库没有生成表 Django 官网:https://docs.djangoproject.co ...

  3. EntityFrameWork数据迁移——暨改变数据库结构的方法

    EntityFramework在对数据迁移时的支持并不好,现在到了6.3版本以后,Model-First的方法也被抛弃,而Code-First的方法更多的是针对首次建立数据模型的情况.一旦想要修改现有 ...

  4. mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?

    原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...

  5. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

  6. mysql升级后将旧数据迁移到新 数据库中

    mysql升级后将旧数据迁移到新 数据库中 1.将原来数据库进行导出成.sql文件 例:StudentSql.sql 2.进入新数据库的bin目录下 复制bin目录 3.cmd进入bin目录下(需管理 ...

  7. DM 数据迁移工具——DTS(MySQL数据迁移到DM8数据库 Windows环境)

    DM 数据迁移工具--DTS MySQL数据迁移到DM8数据库 Windows环境 DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM.DM 到 DM.文件迁移到 DM 以及 DM 迁 ...

  8. 使用java做mysql数据迁移时遇到的两个问题

    有个数据迁移的需求,需要将A数据库的数据迁移至数据库B. 我以为直接生成mysqldump脚本再跑一下就行了,但是发现并不行. 问题出在java.lang.Runtime类上. Runtime.exe ...

  9. 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码

    查看Oracle数据源编码: 执行: SELECT Userenv('language') FROM dual; 结果:AMERICAN_AMERICA.US7ASCII mysql  目标库 为ut ...

最新文章

  1. 06_一对一和一对多
  2. python列表、集合、字典、元祖用途_Python-函数作用域和集合列表字典元祖
  3. 关于Qt QFileDevice::map()接口的一些学习记录
  4. tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...
  5. LeetCode:二叉树相关应用
  6. java c语言 for_Java能写C语言编译器吗
  7. 阿里巴巴、支付宝员工都在用的知识管理工具,究竟有何特别?
  8. 集群、RAC和MAA
  9. 任何举动之前,先思考,思考,再思考
  10. 图神经网络(GNN)教程 – 用 PyTorch 和 PyTorch Geometric 实现 Graph Neural Networks
  11. 该如何清理手机的垃圾?
  12. [3-7]xp系统美化主题包下载每日更新【heizt整理】
  13. phpstudy 自定义php,phpstudy 自定义php版本
  14. java动态生成pdf 合并两个pdf文件功能三
  15. 北京亿阳信通Oracle笔试题
  16. ntp服务器安装和配置文件,NTP服务的安装、配置和使用
  17. 上海公积金网上提取_为什么提取上海公积金租房这么简单?
  18. Error: rendered manifests contain a resource that already exists.
  19. athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?
  20. 【JS】js中的和符号,或符号

热门文章

  1. 【520大礼包】《Scratch趣味编程进阶——妙趣横生的数学和算法》免费送啦!
  2. Exceptional C++ 读书笔记
  3. 大数据行业现状分析和最新行业动态
  4. Shell 中expr的使用
  5. 吃PHP小孩智力好,别老是说自己孩子笨,你要经常给他吃这个,开发智力头脑更聪明!...
  6. xp系统远程不上服务器,WindowsXP 连接Windows 2003远程桌面 本地打印机 映射不过去 解决办法...
  7. marlin2.0.5.4配置详解
  8. O-神、上帝以及老天爷
  9. 论文答辩PPT制作攻略
  10. Android contribution workflow