【问题标题】:Formatting the output of a sql query and creating a csv格式化 sql 查询的输出并创建 csv
【发布时间】:2020-08-27 16:00:59
【问题描述】:

我从 sql 查询得到的当前输出是

database_name   database_size     unallocated_space   reserved      data          index_size    unused
-------------- ------------------ ------------------  ------------- ------------- ------------- ------------- 
 TEST            22200.00 MB            3160.41 MB      9256544 KB    6597072 KB    1559384 KB    1100088 KB

尝试创建格式的 csv

database_name,database_size,unallocated_space,reserved,data,index_size,unused
Test,22200.00 MB,3160.41 MB,9256544 KB,6597072 KB,1559384 KB,1100088 KB

我目前得到的输出

database_name,database_size,unallocated_space
Test,22200.00,MB,3160.41,MB,9256544,KB,6597072,KB,1559384,KB,1100088,KB

echo "database_name,database_size,unallocated_space" > $outfile
awk -F " " '{print $1","$2","$3",$4","$5","$6","$7}' $readFile  >> $outfile

其中 readfile 是包含 sql 查询输出的文件,outfile 是 csv。

【问题讨论】:

  • 请在您的问题中将您的示例和代码包装在 CODE TAGS 中,然后告诉我们。
  • 您可以通过@EdMorton 修改此答案以满足您的需要:stackoverflow.com/a/31947741/4162356 顺便说一句,您使用的是哪个数据库?

标签: unix awk sed


【解决方案1】:

你不能改变你的 SQL 查询吗,比如:

Select concat(database_name, ",", database_size, ",", ...) ...

像这样,之后您不需要进行任何重新格式化。

注意,我写了“concat”,我不确定连接函数的正确名称。

【讨论】:

    【解决方案2】:

    你可以使用这个awk,第一个条件打印标题,第二个条件打印带有数字和MB的字段。

    > awk -v OFS=, 'NR==1{$1=$1;print;next} NF==5{print $1, $2" "$3, $4" "$5}' file
    database_name,database_size,unallocated_space
    Test,100.00 MB,200 MB
    

    或来自@Cyrus 的替代awk(基于您输入中的空格数)。

    > awk 'NR!=2{$1=$1; print}' FS='  +' OFS=',' file
    database_name,database_size,unallocated_space,
    Test,100.00 MB,200 MB
    

    注意:在这两个命令中,$1=$1 是强制awk 拆分为字段并重新计算输出的习惯用法,因此它使用新的字段分隔符进行打印。


    针对更新后的输入进行了修改:

    awk -OFS, 'NR==1{$1=$1;print;next} NF==13{print $1,$2" "$3,...<etc until 12-13> }' file
    

    【讨论】:

    • 或者使用 GNU awk:awk 'NR!=2{$1=$1; print}' FS=' +' OFS=',' file。我假设在 JSS 的问题中,右边的许多空格不是输出的一部分。
    • 以上工作正常,但如果我们有另一行附加到 sql 输出,则上面无法获取 database_name database_size unallocated_space -------------- ------------------ ------------------ TEST 22200.00 MB 3160.41 MB reserved data index_size unused ------------- ------------- ------------- ------------- 9256544 KB 6597072 KB 1559384 KB 1100088 KB 是否可以以某种方式调整以上内容?
    • @JSS Chameon questions 强烈反对。你问了一个问题,得到了一些答案,然后接受了一个答案。如果您需要额外的东西,那么只需提出一个新的后续问题。
    • @Ed Morton 也许你应该被授予狩猎变色龙的徽章,我也必须在这方面训练自己。
    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多