我们如何从 DeNormalized 文本文件 1 构建 Normalized 表?

Posted

技术标签:

【中文标题】我们如何从 DeNormalized 文本文件 1 构建 Normalized 表?【英文标题】:How do we build Normalized table from DeNormalized text file one? 【发布时间】:2013-12-07 19:39:21 【问题描述】:

我们如何从 DeNormalized 文本文件一构建 Normalized 表?

感谢您的回复/时间。

我们需要从 DeNormalized 文本文件构建一个 Normalized DB Table。我们探索了几个选项,例如 unix shell 和 PostgreSQL 等。我希望从这个社区中学习更好的解决方案。

输入的文本文件是各种长度的逗号分隔记录。内容可能如下所示:

XXXXXXXXXX , YYYYYYYYYY, TTTTTTTTTTT, UUUUUUUUUU, RRRRRRRRR,JJJJJJJJJ
111111111111,   22222222222, 333333333333, 44444444, 5555555, 666666
EEEEEEEE,WWWWWW,QQQQQQQ,PPPPPPPP

我们喜欢标准化如下(Split & Pair):

XXXXXXXXXX , YYYYYYYYYY
TTTTTTTTTTT, UUUUUUUUUU
RRRRRRRRR,JJJJJJJJJ
111111111111,   22222222222
333333333333, 44444444
5555555, 666666
EEEEEEEE,WWWWWW
QQQQQQQ,PPPPPPPP

我们是否需要使用文本预处理和加载方法?

如果是,最好的预处理方法是什么?

是否有任何单一的 SQL/Function 方法可以获得上述内容?

感谢您的帮助。

【问题讨论】:

似乎是***.com/q/20433479/398670的编辑版本 【参考方案1】:

使用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]" 将记录设置为, 或换行

【讨论】:

感谢您的建议。我试过。有用。 RS =.. 是否会将某些记录的 ^M 放在末尾? 我有相同的格式,每条记录的末尾都有很多尾随逗号。比如 'XXXXXXXXXX , YYYYYYYYYY, TTTTTTTTTTT, UUUUUUUUUU, RRRRRRRRR,JJJJJJJJJJ,,,,,,,,,,,,' 我如何使用你的 awk 命令处理这个文件? 不会添加^M。您可以只测试 $0 以不获取额外的逗号,如下所示:awk '$1=$1 NR%2==1 && $0 printf "%s,",$0 NR%2==0 && $0' RS="[,\n]" file【参考方案2】:

这是一个更新。这是我在 Linux 服务器上所做的。

    sed -i 's/\,,//g' inputfile   <------ Clean up lot of trailing commas

    awk '$1=$1 NR%2==1 printf "%s,",$0 NR%2==0' RS="[,\n]" inputfile <----Jotne's idea

    dos2unix -q -n inputfile outputfle <------ to remove ^M in some records

    outputfile is ready to process as comma delimited format  

有进一步改进上述步骤的想法吗?

感谢您的帮助。

【讨论】:

以上是关于我们如何从 DeNormalized 文本文件 1 构建 Normalized 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用PowerQuery合并文件下的文件

如何从 .doc 和 .docx 文件中提取纯文本? [关闭]

如何计算文本文件中重复单词的频率?

用于从我们上传的图像中读取任何文本的 PHP api

如何通过 django 代码从我的 linux pc 识别文本文件而不检查其扩展名和文件大小? [复制]

无法在 UWP 上从文本到语音的音频创建 URI 文件