关于mysql数据导入到oracle数据库下

286 阅读3分钟

前言

  • 对接数据,因为对方给我们的数据库是mysql数据库,而我们使用的是oracle
  • mysql和oracle的语法有些不同,下面介绍是如何将mysql成功导入到oracle下


三个方面

1. 关于mysql与oracle表结构的不同(创表)

  • 我们简单的看下mysql导出的数据是怎样的,拿其中一个表来看看
  • DROP TABLE IF EXISTS `sys_role`;
    CREATE TABLE `sys_role` (
      `id` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
      `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
      `enName` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '英文名',
      `roleType` varchar(255) COLLATE utf8_bin DEFAULT NULL ,
      `isSys` int(5) DEFAULT NULL ,
      `delFlag` int(3) DEFAULT '0' ,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  • 首先,oracle是用单引号括起来的,而mysql是用`括起来,所以我们全局替换Ctrl+F替换
  • oracle表名和字段是不需要用单引号括起来,所以上面的表转换成oracle表结构如下:
  • create table sys_role
    (id varchar(64) primary key,
    name varchar2(255) NOT NULL,
    enName varchar2(255) NOT NULL,
    roleType varchar2(255) NOT NULL,
    isSys int NOT NULL,
    delFlag int NOT NULL )

2. 关于mysql与oracle表结构的不同(插入数据)

  • mysql下数据
  • INSERT INTO `sys_role` VALUES ('095a0dbe-24aa-4fe9-93cf-15947b2599c4', '超级管理员', 'admin', 'security-role', '1', '权限最高', '0');
    INSERT INTO `sys_role` VALUES ('2461ccfb-f4e5-475e-a84a-78563017b978', '演示账号', 'demo', 'user', '0', '用来演示系统的账号', '0');
    INSERT INTO `sys_role` VALUES ('57f11d4f-54fd-416f-b01b-dff0e687ab3c', '一般用户', 'common', 'user', '0', '', '0');
    INSERT INTO `sys_role` VALUES ('70cbd8e4-cf86-4607-b368-caefe12d3cce', 'tesst', 'tesst', 'user', '0', '', '0');
    INSERT INTO `sys_role` VALUES ('e039c9eb-0def-4e03-92ea-025c03314b18', '管理员', 'editor', 'security-role', '1', '', '0');

  • 还是一样,oracle表名字不需要单引号括起来
  • INSERT INTO sys_role  VALUES ('095a0dbe-24aa-4fe9-93cf-15947b2599c4', '超级管理员', 'admin', 'security-role', '1', '权限最高', '0');
    INSERT INTO sys_role  VALUES ('2461ccfb-f4e5-475e-a84a-78563017b978', '演示账号', 'demo', 'user', '0', '用来演示系统的账号', '0');INSERT INTO sys_role  VALUES ('57f11d4f-54fd-416f-b01b-dff0e687ab3c', '一般用户', 'common', 'user', '0', '', '0');INSERT INTO sys_role  VALUES ('70cbd8e4-cf86-4607-b368-caefe12d3cce', 'tesst', 'tesst', 'user', '0', '', '0');INSERT INTO sys_role  VALUES ('e039c9eb-0def-4e03-92ea-025c03314b18', '管理员', 'editor', 'security-role', '1', '', '0');

3. 使用plsql文件的命令(command)执行语句

  • 不管创表还是插入,我们一般都不会新建个sql窗口直接运行sql
  • 会使用plsql工具的文件(file) -- 命令(command)窗口执行
  • 英文版在这:

  • 中文版在这:


  • 有什么好处呢?
    他可以帮助我们检查语法,哪里执行失败会明确表明,而且有错误信息

  • 记得执行完insert操作要commit提交一下哦


最后总结

记录新技术、踩过的坑与大家交流,也很开心文章能帮助到大家,会不定期写更好的文章与大家见面,一个逐渐走向全栈的搬运工的日常!
你的点赞,是我坚持的源头,笔芯~