在“选择语句”和“格式”中解析特定关键字

时间:2014-07-15 05:32:34

标签: python bash

我有一个示例选择语句:

Select D.account_csn, D.account_key, D.industry_id, I.industry_group_nm, I.industry_segment_nm From ecs.DARN_INDUSTRY I JOIN ecs.DARN_ACCOUNT D
ON I.SRC_ID=D.INDUSTRY_ID
WHERE D.ACCOUNT_CSN='5070000240'

我想将select语句解析为单独的文件。第一个文件名称为ecs.DARN_INDUSTRY 它应该如下所示:

industry_group_nm
industry_segment_nm 

同样,另一个名为ecs.DARN_ACCOUNT的文件和内容如下所示:

account_csn
account_key
industry_id

如何在Bash或Python中执行此操作?

2 个答案:

答案 0 :(得分:2)

我怀疑你会找到一个真正简单的答案(也许有人可以证明不是这样)。但是,您可能会找到python-sqlparse useful

解析一般SQL语句会很复杂,很难准确猜出您要完成的任务。但是,我认为您正在尝试通过SQL解析来提取表和相应的列引用,在这种情况下,请查看this question,它基本上直接询问了这一点。

答案 1 :(得分:1)

这是一个通过awk的长期工作命令,

awk 'NR==1{gsub(/^.*\./,"",$5);gsub(/^.*\./,"",$6);gsub(/.$/,"",$5); printf $5"\n"$6"\n" > "DARN_INDUSTRY"; gsub(/^.*\./,"",$2);gsub(/^.*\./,"",$3);gsub(/^.*\./,"",$4);gsub(/.$/,"",$2);gsub(/.$/,"",$3);gsub(/.$/,"",$4); printf $2"\n"$3"\n"$4"\n" > "DARN_ACCOUNT"}' file

<强>解释

  • gsub(/^.*\./,"",$5)删除第5列中第一个.符号的所有字符。

  • printf $5"\n"$6"\n" > "DARN_INDUSTRY"printf命令的输出重定向到名为DARN_INDUSTRY的文件。

  • gsub(/.$/,"",$4)删除第4列中的最后一个字符。