我有一个示例选择语句:
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中执行此操作?
答案 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列中的最后一个字符。