我们如何从非规范化文本文件一构建规范化表?
感谢您的回复/时间。
我们需要从非规范化文本文件构建规范化数据库表。我们探索了几个选项,例如 unix shell 和 PostgreSQL 等。我希望从这个社区学习更好的解决方案。
输入的文本文件是各种长度的逗号分隔记录。内容可能如下所示:
XXXXXXXXXX , YYYYYYYYYY, TTTTTTTTTTT, UUUUUUUUUU, RRRRRRRRR,JJJJJJJJJ
111111111111, 22222222222, 333333333333, 44444444, 5555555, 666666
EEEEEEEE,WWWWWW,QQQQQQQ,PPPPPPPP
我们喜欢如下规范化(拆分和配对):
XXXXXXXXXX , YYYYYYYYYY
TTTTTTTTTTT, UUUUUUUUUU
RRRRRRRRR,JJJJJJJJJ
111111111111, 22222222222
333333333333, 44444444
5555555, 666666
EEEEEEEE,WWWWWW
QQQQQQQ,PPPPPPPP
我们是否需要使用文本预处理和加载方法?
如果是,最好的预处理方法是什么?
是否有任何单一的 SQL/Function 方法来获得上述内容?
感谢您的帮助。
最佳答案
使用 gnu awk
(由于 RS)
awk '{$1=$1} NR%2==1 {printf "%s,",$0} NR%2==0' RS="[,\n]" file
XXXXXXXXXX,YYYYYYYYYY
TTTTTTTTTTT,UUUUUUUUUU
RRRRRRRRR,JJJJJJJJJ
111111111111,22222222222
333333333333,44444444
5555555,666666
EEEEEEEE,WWWWWW
QQQQQQQ,PPPPPPPP
{$1=$1}
清理并删除多余的空格
NR%2==1 {printf "%s,",$0}
打印奇数部分
NR%2==0
打印偶数部分和新行
RS="[,\n]"
设置记录为,
或换行符
关于linux - 我们如何从 DeNormalized 文本文件 one 构建 Normalized 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445701/