一、数据库编码查询(防止导出导入乱码问题)
1、Oracle服务端编码格式确认:select userenv(‘language’) from dual;
2、Oracle客户端编码格式确认(sqlplus 实例名/密码登录后执行):echo $NLS_LANG(若与服务端编码不一致,则新增环境变量:export NLS_LANG=Oracle服务端编码格式;
3、确认mysql数据库编码是否为utf-8,show variables like ‘char%’(mysql -u -p 登录后执行);
二、导数脚本
SPOOL 导出文件路径/文件名.txt
set echo off
set feedback off
set term off
set heading off
set newpage none
set trimspool on
set linesize 1000;
查询sql语句
SPOOL OFF
mysql -h数据库的ip地址 -u用户名 -p -N --execute=“查询sql语句” 数据库名 > 导出文件路径/文件名.txt
三、读取文件编码
String encode = EncodingDetect.getJavaEncode(file);
br = new BufferedReader(new InputStreamReader(new BOMInputStream(new FileInputStream(file)), encode));