oracle表数据导入到mysql两种方法,方法二使用工具sqlyong,解决notfound(Errcode-2)与Invalid utf8 character string: ‘“‘问题

本文介绍了两种将Oracle表数据导入到MySQL的方法,包括使用PLSQL导出SQL文件和通过SQLyong导入CSV文件。在使用SQLyong过程中,解决了notfound(Errcode-2)路径错误和Invalid utf8 character string编码问题,以及CSV文件字段折叠导致的数据导入异常。确保编码和格式正确后,数据迁移顺利完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle表数据导入到mysql方法1思路,常用方法

先用plsql把oracle表数据导出为sql文件,sql文件里都是oracle的sql语句,检查sql语句是否符合mysql语句规范,如:oracle的to_date()在mysql中没有,要用str_to_date。
都符合规范后,放到mysql的图形工具中执行即可。

操作步骤

导出为sql文件
在这里插入图片描述
检查是否符合mysql语法规范,如果有日期格式需要修改
在这里插入图片描述
to_date函数名替换为str_to_date,
oracle导出日期格式为 dd-mm-yyyy hh24:mi:ss,替换为 %d-%m-%Y %H:%i:%s
在这里插入图片描述
最后放到工具下执行sql语句,表数据迁移完成。

oracle表数据导入到mysql思路2

先用plsql把oracle表数据导出为csv文件,再用sqlyong从csv文件导入表数据

PLSQL导出数据为csv文件

巧妙使用shift(shift+首行,shift+末行)选中需要的数据后右键选择导出为csv文件
在这里插入图片描述

sqlyong导入csv文件数据

在sqlyong下选择对应表右键选择导入-从csv中导入数据
在这里插入图片描述

出现问题1:notfound(Errcode-2)

notfound报错为找不到路径错误,导入csv文件路径中不能出现中文,如下有中文则报notfound。
在这里插入图片描述
解决方法:把csv文件放到纯英文路径下。

出现问题2:Invalid utf8 character string: ‘"’

编码不匹配问题,当导入时选用默认编码则可能会出现该问题
在这里插入图片描述
解决方法:把csv文件保存编码转为UTF-8,再在sqlyong导入csv时改字符编码为对应编码UTF-8
操作如下:

  1. 使用notepad++改csv保存编码
    在这里插入图片描述
  2. sqlyong导入时改字符集编码为导入csv对应的编码
    在这里插入图片描述
    单击导入后显示如下图:
    在这里插入图片描述
    只有警告没有错误,导入成功!

补充1

如果导入后查询时中文显示乱码,是导入编码不匹配的问题,例如csv文件以UTF-8编码保存,导入时以GBK导入,中文显示就会乱码,以一致的编码再导入一次即可。

补充2

如果导入的日期数据全为0,还有部分字段只截取了部分内容,如下:
在这里插入图片描述
在这里插入图片描述
则是csv文件字段被折叠,使用excel工具wps打开csv文件,发现phone与create_time展示不正常:
在这里插入图片描述

解决方法是把这两列展开,即把phone与create_time的列宽拉大到显示正常,之后导入就会正常

如果发现导入的行列对不上,也可以使用wps对csv的行列先做删除操作调整到只剩正确的行列。

补充3

mysql使用的是load data local infile语句导入csv文件数据,完整的代码如下:

LOAD DATA LOCAL INFILE 'C:\\Users\\tom\\Desktop\\data.csv' 
INTO TABLE `database_name`.`t_user` 
FIELDS ESCAPED BY '\\' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES -- 忽略第一行列名行
(`col1`, `col2`, `col3`,`CREATE_TIME`)

如果要控制日期格式可以使用以下代码:

LOAD DATA LOCAL INFILE 'C:\\Users\\tom\\Desktop\\data.csv' 
INTO TABLE `database_name`.`t_user` 
FIELDS ESCAPED BY '\\' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES -- 忽略第一行列名行
(`col1`, `col2`, `col3`, @CREATE_TIME)
SET CREATE_TIME=STR_TO_DATE(@CREATE_TIME,'%Y/%m/%d %H:%i:%s')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tazuxianzai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值