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
操作如下:
- 使用notepad++改csv保存编码
- 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')