将sqoop eval结果导出为逗号分隔的输出

j2datikz  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(304)

我正在运行一个sqoop eval代码,它以管道分隔的格式生成输出。我想它在一个逗号格式,并删除额外的格式,以便我可以存储在变量中,可以使用其他地方。
代码如下: sqoop eval -Dmapreduce.job.queuename=comres $PASS_STRING --connect 'jdbc:sqlserver://XXXX:1433;DatabaseName=XXXX' --query "select column_name from information_schema.columns where table_name='MOT_BAJA' AND TABLE_CATALOG='EEEE'" 这就是现在正在展示的内容:

------------------------
| column_name          |
------------------------
| TB_CODIGO            |
| TB_ELEMENT           |
| TB_INGLES            |
| TB_IMSS              |
| TB_NUMERO            |
| TB_TEXTO             |
| LLAVE                |
------------------------

我想要这样:

TB_CODIGO,TB_ELEMENT,TB_INGLES,TB_IMSS,TB_NUMERO,TB_TEXTO,LLAVE
wyyhbhjk

wyyhbhjk1#

您可以使用awk:

your_command | awk 'NR > 3 && NF==3 {printf "%s%s", (printed ? "," : ""), $2; printed++}'

说明: NR > 3 && NF == 3 :如果当前正在处理的行数(nr)大于3,并且此行的字段数(nf)为3,则继续使用中的代码处理该行 { ... } . printed :我们在这个变量中保留到目前为止已打印的字段数。 (printed ? "," : "") :如果到目前为止至少打印了一个字段,则计算结果为“,”。否则计算结果为空字符串“”。 printf "%s%s", (printed ? "," : ""), $2 :,如果之前已经打印过字段,则打印“,”。然后打印当前行的第二个单词。

相关问题