mysql怎么从oracle获取数据

嘿,MySQL 从 Oracle 获取数据。
这在2 02 2 年是比较常见的,主要靠这几个方法。

第一,工具迁移方法,这个效率更高。
像 DataX 这样的工具应该可以。
将 MySQLReader 插件作为源,将 OracleWriter 插件作为目标。
然后编写一个JSON配置文件,该文件应该清楚地解释表的结构,字段如何映射,以及同步的规则。
完成后,运行命令 python datax.py job.json,即可将其批量迁移。
这东西速度非常快。
我尝试过一次迁移数千个表。
量不大时,一天即可完成。

还有Oracle GoldenGate,更好一点,可以实时同步。
您在 Oracle 端配置 Extract 进程来捕获数据更改。
然后在MySQL端配置一个Replicat进程来部署变化的数据。
这适合那些对实时数据要求较高的人。
不过,设置有点复杂,我花了几天时间才完成。

然后是Navicat,比较简单,可视化就可以使用。
首先链接到Oracle库,然后链接到MySQL库。
然后点击“数据传输”功能,选择表格,它就会自动传输给您。
它将自动转换基本数据类型,但不会转换复杂类型,例如视图或存储过程。
你必须手动检查。

二、手动脚本迁移方法。
这样就比较麻烦了,但是有时候也没有办法。
首先使用Oracle的exp或expdp命令导出数据并创建DMP文件。
例如,exp user/pass@orcl_dbtables=emp file=emp.dmp将导出emp表。

导出后,需要转换格式。
需要编写Python脚本,使用cx_Oracle连接Oracle,使用mysql连接器连接MySQL,读取DMP文件中的数据,转换类型,然后写入MySQL。
两者之间有很多事情,你必须处理各种差异。
例如,Oracle的DATE格式与MySQL不同,VARCHAR长度限制也与Oracle不同,因此需要手动更改脚本。

最后一步是导入MySQL。
您可以使用 mysql 命令运行转换后的脚本。
例如,mysql -u root -p my_db < Converted>
三、注意事项。
嗯,这有很多陷阱。
一是兼容性问题。
MySQL中的TEXT类型必须转换为Oracle中的CLOB,ENUM类型必须转换为VARCHAR2 Oracle在MySQL中的NUMBER类型必须与你设置的DECIMAL精度相匹配,否则导入时可能会不正确。

另一个,性能优化。
迁移集群时,最好先禁用目标端的索引和约束,等所有数据导入后再重建。
否则,迁移速度将会极其缓慢。
尤其对于大表,分区导入更能避免表堵塞,影响业务。

最后需要验证和测试。
迁移数据后,应该比较源端和目标端的数据行数,看看关键字段值是否正确。
你也应该尝试数据迁移后,使用该数据的应用程序是否还能正常工作,是否存在问题。

总之,这并不难,但要小心。
2 02 2 年,我帮朋友做过一次。
十几张表,数据量不大,几百兆,花了两天时间才搞定。
也许我有点极端,认为 DataX 是最快的,但这确实取决于情况。

mysql怎么替换oracle中的regexp_replace正则函数?

当我第一次开始使用 8 .0 时,我尝试了你提到的 MySQL 8 .0 的 REGEXP_REPLACE。
那一年,公司的项目正好是数据库升级,我负责这个。

我记得在旧的MySQL 5 .7 环境中,我尝试用REGEXP_REPLACE替换表中的数据。
结果如何?直接报错,说这个函数不被识别。
我赶紧查了一下文档,发现5 .7 没有这个。

所以你是对的,它们在 8 .0 版本之前是分开的。
然后,要查找字符串,请使用 REGEXP,要替换它,请使用 REPLACE。
例如,当时我编写了一个查询来查找以“st”开头的名称:
sql 从 Person_tbl 名称中选择名称 WHERE REGEXP '^st';
这就是搜索。
作为替代方案,只需要两个函数:
sql -
替换第一个匹配项 SELECT REPLACE(name, 'old', 'new') FROM user_tbl WHERE name REGEXP '^st';
-
替换所有匹配项 SELECT REPLACE(name, 'old', 'new') FROM user_tbl WHERE name REGEXP '^st';
嘿,我告诉过你这是一件大事。
然后升级到8 .0,只用一个REGEXP_REPLACE就实现了。
只需一行代码,这很棒。
不过你一定要确保那个版本是支持的,不然你就会像我当时那样,挣扎了半天还是报错。

怎么将oracle的sql文件转换成mysql的sql文件

说实话,还蛮麻烦的。
然而,如果使用得当,PowerDesigner确实可以为您省去很多麻烦。
我之前已经做过好几次了,印象最深刻的是2 01 8 年我帮助同事迁移系统。
那时我还在摸着石头过河。

第一步是将Oracle SQL文件导入PowerDesigner
这一步是最重要的:需要输入Oracle表结构。
首先需要从Oracle数据库中获取表结构。
请记住,只有表结构,而不是数据,使用导出功能并将其保存为.sql文件。
我通常以文本格式而不是二进制格式导出。

然后打开PowerDesigner。
单击“文件”,然后单击“逆向工程”,然后选择“数据库”。
将出现一个名为“新物理数据模型”的窗口。
在这里,您需要选中“定义公共 DBMS”框,然后单击“确定”。

接下来,选择与您的 .sql 文件匹配的数据库类型,例如 Oracle1 0g,它应该与您的文件匹配。
单击“确定”将显示选项列表,选择“使用脚本文件”,然后单击小加号按钮,找到 .sql 文件并添加它。

第二步将数据库类型转换为MySQL
这一步需要将PowerDesigner中的目标数据库更改为MySQL。
单击“数据库”,然后单击“更改当前 DBMS”。
这里选择General,然后New DBMS,然后选择MySQL5 .0。
具体版本取决于您使用的MySQL版本。
单击“确定”进行应用。

第三步是导出适用于MySQL的SQL文件。

最后一步是创建一个可以识别MySQL的.sql文件。
按 Ctrl+G 或单击“数据库”,然后单击“创建数据库”。
将出现一个窗口,您可以在其中指定文件名和保存路径。
单击“确定”,传输将开始。

注释
中间可能会出现一些问题。
例如,MySQL 可能不支持某些 Oracle 语法。
当时我不明白为什么MySQL中的这个功能不能正常工作,所以我最终手动更改了它。
所以传输完成后一定要在MySQL中运行,检查是否有任何错误。
此外,PowerDesigner 的版本也必须兼容。
如果版本太旧,则无法转换为最新版本的Oracle或MySQL。

就是这样,您可以将 Oracle SQL 文件转换为 MySQL。
它也可以在 MySQL 中使用。