Python 解析Select语句中的特定关键字并格式化
我有一个select语句示例:Python 解析Select语句中的特定关键字并格式化,python,bash,Python,Bash,我有一个select语句示例: 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
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
account_csn
account_key
industry_id
类似地,另一个文件名为ecs.DARN_ACCOUNT,内容如下:
industry_group_nm
industry_segment_nm
account_csn
account_key
industry_id
如何在Bash或Python中实现这一点???我怀疑您是否能找到一个真正简单的答案(也许有人能证明不是这样)。但是,您可能会发现
解析一般的SQL语句将是复杂的,并且很难准确地猜测您想要完成什么。但是,我认为您正在尝试通过sql解析提取表和相应的列引用,在这种情况下,请看哪种方法基本上直接问这个问题。我怀疑您是否能找到真正简单的答案(也许有人能证明不是这样)。但是,您可能会发现
解析一般的SQL语句将是复杂的,并且很难准确地猜测您想要完成什么。但是,我认为您正在尝试通过sql解析提取表和相应的列引用,在这种情况下,请看哪种方法基本上直接问这个问题。我怀疑您是否能找到真正简单的答案(也许有人能证明不是这样)。但是,您可能会发现
解析一般的SQL语句将是复杂的,并且很难准确地猜测您想要完成什么。但是,我认为您正在尝试通过sql解析提取表和相应的列引用,在这种情况下,请看哪种方法基本上直接问这个问题。我怀疑您是否能找到真正简单的答案(也许有人能证明不是这样)。但是,您可能会发现
解析一般的SQL语句将是复杂的,并且很难准确地猜测您想要完成什么。但是,我认为您正试图通过sql解析来提取表和相应的列引用,在这种情况下,请看哪种方法基本上是直接问这个问题的
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
说明:
删除列号5中第一个gsub(/^.*\./,“”,$5)
符号之前的所有字符
将printf$5”\n“$6”\n“>“DARN_INDUSTRY”
命令的输出重定向到名为printf
的文件DARN_INDUSTRY
删除第4列中的最后一个字符gsub(/.$/,“”,$4)
- 这里有一个通过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
说明:
删除列号5中第一个gsub(/^.*\./,“”,$5)
符号之前的所有字符
将printf$5”\n“$6”\n“>“DARN_INDUSTRY”
命令的输出重定向到名为printf
的文件DARN_INDUSTRY
删除第4列中的最后一个字符gsub(/.$/,“”,$4)
- 这里有一个通过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
说明:
删除列号5中第一个gsub(/^.*\./,“”,$5)
符号之前的所有字符
将printf$5”\n“$6”\n“>“DARN_INDUSTRY”
命令的输出重定向到名为printf
的文件DARN_INDUSTRY
删除第4列中的最后一个字符gsub(/.$/,“”,$4)
- 这里有一个通过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
说明:
删除列号5中第一个gsub(/^.*\./,“”,$5)
符号之前的所有字符
将printf$5”\n“$6”\n“>“DARN_INDUSTRY”
命令的输出重定向到名为printf
的文件DARN_INDUSTRY
删除第4列中的最后一个字符gsub(/.$/,“”,$4)