数据中心签名图片导入TFS

数据中心签名图片导入TFS

操作的服务器是 172.16.3.51


2015年的数据已经全部导入tfs,2015年之前的签名只存在数据中心。

由dba导出订单号以及签名的路径文件,中间以逗号分隔,格式如下:

[root@mfsmaster tfs_sign]# head TBL_TXN_VOUCHER_INF-1504-05-1.txt
20150517000024554032,/images/sign/137007452736950046.png
20150517000024554033,/images/sign/137007244844566617.png
20150517000024554041,/images/sign/137007333019517925.png
20150517000024554058,/images/sign/137007152124967579.png
20150517000024554060,/images/sign/137007553315054730.png
20150517000024554066,/images/sign/137007434228617749.png

过滤掉签名图片大小为0

历史遗留问题,原来有一些签名图片大小是0,是无法导入到 tfs 当中,所以要把这些文件去掉,否则导入脚本会冲断。也可以在导入脚本中捕捉这些异常而忽略掉,但这里使用手动找出,方便纪录。

带有 null 字符的路径去掉:

grep -v null TBL_TXN_VOUCHER_INF-1504-05-1.txt >  TBL_TXN_VOUCHER_INF-1504-05-1.tmp.txt
mv  TBL_TXN_VOUCHER_INF-1504-05-1.tmp.txt TBL_TXN_VOUCHER_INF-1504-05-1.txt

构造完整图片路径:

cut -d "," -f2 TBL_TXN_VOUCHER_INF-1504-05-1.txt  > a.txt
vim a.txt

行首增加绝对路径前缀 /opt/mfs/images/cashbox

:%s/^/\/opt\/mfs\/images\/cashbox/g

排序,找出文件大小为0的文件:

dos2unix a.txt
cat a.txt |xargs -i du -sh {}  > b.txt
sort -n b.txt > c.txt

编辑打开 c.txt 文件,将文件大小为0的保留,其他删除掉。

比较,去掉文件大小为0的纪录:

vimdiff  TBL_TXN_VOUCHER_INF-1504-05-1.txt c.txt

导入签名

防止 vpn中断,将导入程序放后台运行:

nohup ruby import_images_to_tfs.rb TBL_TXN_VOUCHER_INF-1504-05-1.txt > TBL_TXN_VOUCHER_INF-1504-05-1.update.txt
ruby gen_dc_sql.rb TBL_TXN_VOUCHER_INF-1504-05-1-update.txt > TBL_DC_TXN_VOUCHER_INF-1504-05-1-update.sql

检查是否有 feff 问题:

grep -I -r 
\xEF\xBB\xBF' TBL_TXN_VOUCHER_INF-150601-09-update.sql

如果有,手动删掉<feff>字符,否则无法写入数据库。