我们都知道,CSV格式可以用Excel表打开,且CSV格式的本质是以“,”为分隔符的文本,那么我们在sql的字段之间加入","即可以CSV格式的文件进行输出。
下面,我们使用shell脚本来实现:
#!/bin/bash
#文件保存路径
exportdata_dir = /data/export
#获取日期
dd = `data + %Y%m%d`
#数据库信息
#数据库用户名
username = 'root'
#数据库密码 可以放在文件内
password = 'root'
#数据库名
database_name = 'export_test'
#数据库之地
host = '127.0.0.1'
#如果文件夹不存在则创建
if [ ! -d $exportdata_dir ]
then
mkdir -p $exportdata_dir
fi
如果是windows,增加环境变量的方法,控制面板->性能和维护->系统->高级->环境变量->用户变量->新建->变量名为NLS_LANG变量值为AMERICAN_AMERICA.UTF-8。如果是UNIX,则打开对应用户的profile文件,如Linux下是.bash_profile,HP-UX是.profile,加入exportNLS_LANG=AMERICAN_AMERICA.UTF-8。
一般来说,oracle数据导出spool方式,中文出现乱码,这情况是因为数据库服务器和客户端字符集不匹配,执行sqlplus的机器就是客户端,服务器和客户端也可能是一台机器,执行sqlplus之前要先设置客户端的字符集,在linux上:export NLS_LANG=.......
在windows上set NLS_LANG查询数据库字符集:select property_value from database_properties where property_name like 'NLS_CHAR%'
1、比如查询结果是:ZHS16GBK
那你在sqlplus之前要设置:export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后再登录sqlplus用spool生成数据
检查下你导出时候的环境变量,导入时的环境变量
2、比如导出时NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
导入时NLS_LANG没有设置,或者设置为其他字符集,则导入的库内汉字就有可能变成乱码。
解决方法,连接数据库的时候设置正确字符集即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)