请教,需要写一个 Python 脚本,主要用来校验数据库导出文件的格式是否正确,比如导出文件是否按照表的各个字段约定,编码有没有异常字符,这样的需要哪些包呢?

2017-08-16 02:13:54 +08:00
 jahan
如题,谢谢。
2169 次点击
所在节点    Python
14 条回复
Trim21
2017-08-16 02:15:19 +08:00
jahan
2017-08-16 02:16:46 +08:00
现在主要是大量的数据导出文件,很多入库时候发现错误,想通过脚本验证下数据是否能够顺利入库。
jahan
2017-08-16 02:22:46 +08:00
@Trim21 看起来很复杂。
binux
2017-08-16 06:12:42 +08:00
你需要定义什么是正确,这就够你受得了
NoAnyLove
2017-08-16 07:49:40 +08:00
用的什么数据库?遇到这种问题,我一般的解决方法是,建个零时的数据库,直接导入看效果,比解析格式什么的简单多了
jahan
2017-08-16 11:14:05 +08:00
@NoAnyLove DB2;
表太过巨大了,合计表导入都要 4T,要不然临时表是个好办法。。
导入了发现很多因为编码问题或者出现了异常字符,失败。
而且有的是增量,处理起来很麻烦。
曾经尝试 split 文件到小文件,比如 50 万行一个文件,结果发现有些文件一分割就乱码了。
而这种文件基本上导入也有问题,但是如果打开看,基本看不到有什么不同。用 readline 来看,基本是遇到了不是 utf8 的字符。
PythonAnswer
2017-08-16 11:22:07 +08:00
找出经常出现的编码种类。你这个库,不会用到超过 5 种以上的编码吧。然后再想办法。
jahan
2017-08-16 11:27:06 +08:00
@PythonAnswer 标准编码是 Utf8,其他的字符都是非法。怎么找到这些非法字符? readline 读到非 utf8 就报异常了。
BOYPT
2017-08-16 11:31:29 +08:00
@jahan #8 那就不要 readline 呀,直接 read 进去一段数据,然后尝试按 utf8 decode,如果出现异常就是有问题了。
PythonAnswer
2017-08-16 11:32:25 +08:00
报异常时,用其它编码接住啊
NoAnyLove
2017-08-16 11:56:20 +08:00
按照 bytes 读入,然后尝试从 utf-8 解码是一个方法,不过有个问题是,有可能可以解码,但是解码出来的字符不一定是有意义或者能够导入数据库的。
jahan
2017-08-16 14:04:13 +08:00
@NoAnyLove 是。一旦出现,正行就不行了。
jahan
2017-08-16 14:12:21 +08:00
@NoAnyLove 有没有办法把这一行移植出到其他的文件,而不导致下一行乱码?
觉得没有找到文件会出现乱码的原因,因为数据是其他公司过来的
NoAnyLove
2017-08-16 23:43:12 +08:00
@jahan 理论上可以,但是不确定按照行来读是不是一定能够解析成功。你最好先找到一个出错的地方再根据出错原因来测试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383265

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX