liunx转换mysql数据库字符集_linux下文件字符集转化实战篇

linux下文件字符集转化实战篇

------------------------------------------

为什么转换编码,起因:分析应用程序日志,文件编码格式gb2312(含中文字符),

通过linux shell脚本从日志中提取出需要的字段并生成有固定符号隔离的文本文件导入到mysql数据库,

mysql建立的库字符集是utf8(特殊原因没有改成gb2312),由于原始的日志文件是gb2312格式,

通过shell生成的最终文件编码格式也是gb2312编码,所以才需要用到编码转换,

mysql库字符集编码必须与导入的文本文件编码格式一致,才能顺利导入。

脚本

# vi x

#!/bin/sh

ts=`(date +%Y%m%d)`

#targetdir=/root/siji/

#cd $targetdir

cat alertlog | grep $ts | grep -a '级' > c34log

#逐一取需要的字段,并用;号隔开

cat c34log | awk '{print $1}' | sed 's/.*$/&\;/g'>s1

cat c34log | awk '{print $2}' | sed 's/.*$/&\;/g'>s2

cat c34log | awk '{print $3}' | sed 's/.*$/&\;/g'>s3

cat c34log | awk '{print $4}' | sed 's/.*$/&\;/g'>s4

cat c34log | awk '{print $5}' | sed 's/.*$/&\;/g'>s5

cat c34log | awk -F'(' '{print $2}' | awk -F')' '{print $1}' | sed 's/%//g' | sed 's/.*$/&\;/g' >s6

#合成各个字段,生成最终文本文件

paste s1 s2 s3 s4 s5 s6 > all

#把含中文的文本文件转换成的utf8编码格式

enca -L zh_cn -x utf8 all

#导入数据库

/usr/local/mysql/bin/mysql -h 127.0.0.1 -u root -pYOUR_PASSWORD

sql文件内容(sql语句)

# vi sql

#使用alertlog数据库

use alertlog;

#导入生成的all文本文件,其中用;隔离各个字段,回车隔离每行

load data local infile 'all' into table c3log fields terminated by ';' lines terminated by '\n';

# chmod 711 x

一:字符编码的转换工具

1.多平台方法:

iconv提供标准的程序和API来进行编码转换;

convert_encoding.py基于Python的文本文件转换工具;

decodeh.py提供算法和模块来谈测字符的编码;

2.Linux:

recode转换文件编码;

Utrac转换文件编码;

cstocs转换文件编码;

convmv转换文件名编码;

enca分析给定文件的编码;

3.Windows:

cscvt字符集转换工具;

二:linux下查看文件编码

1.在vi中查看文件编码

:set fileencoding

2.用enca强大的查看编码工具

#查看文件编码

# enca -L现在文件的语言-d需查看编码的文件名

如enca -L zh_cn -d test_zh_cn.file

------------

# enca -l language查看支持的语言

三. linux转换文件编码

1.enca转化编码(强烈推荐enca工具)

# enca -L现在文件的语言-x需要转换编码需要转换编码的文件

如enca -L zh_cn -x utf8 test_zh_cn.file

2. iconv转换,这个工具不好使!经常转化不成功

iconv -f文件原来编码-t需要转换的编码需要转换的编码的文件-o转换编码后的文件

或者

iconv -f文件原来编码-t需要转换的编码需要转换的编码的文件>转换编码后的文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值