【问题标题】:Omit a delimiter type "|," in a row during SQL output在 SQL 输出期间连续省略分隔符类型“|”
【发布时间】:2016-05-11 20:06:58
【问题描述】:

我在 sqlite3 数据库上运行报告。

命令是:

sqlite3 db.sqlite3 "select job_title, job_url, regions.region_name from job_results join regions on (regions.i_region=job_results.region_id)" > output.csv

这会产生带有|, 分隔符的输出。这就是为什么有时在第一行,因为这是列表的标题,分隔符类型在标题中,所以当我使用 LibreOffice 或 Excel 打开文件时,给定列中第一行的一部分现在打开第二个 2 和所有其他项目都在该列上关闭。

我需要知道如何在 Excel 或 LibreOffice 中打开 output.csv 文件而不解析第一行,因为列表器在其列表标题中包含分隔符类型。因此,我想知道如何更改 csv 文件第一行中的“分隔符”或 |, 字符以解决此问题。我尝试使用tr '\|' '' 摆脱那些分隔符,但它替换了我需要保留的所有分隔符。

谢谢!

【问题讨论】:

  • 你不能用As吗? Select job_title As \"Job | , Title\" 所以它是用引号括起来的,不会被解析为分隔符?

标签: excel bash csv sqlite tr


【解决方案1】:

如果您想从文件 (output.csv) 的第一行删除所有 |, 字符,请使用以下 sed 命令并将输出重定向到完成的文件 (finish.csv ):

sed "1s/[|\,,]//g" output.csv > finish.csv

示例初始数据(output.csv):

ewqweqwe|qwew,eqwe|qwew,ewqe|qweqw,wqeq|
gggggggg|fgggggggg|ggggggggg|gsefsfsfdf|
eqweqweq|aeweqweqw|aweewqweq|adqweqweqe|

修改数据示例(finish.csv):

ewqweqweqweweqweqwewewqeqweqwwqeq
gggggggg|fgggggggg|ggggggggg|gsefsfsfdf|
eqweqweq|aeweqweqw|aweewqweq|adqweqweqe|

HTH

【讨论】:

  • HTH 是什么意思,在 StackOverflow 上,通常不习惯给你的答案签名,因为它们是由你的天赋签名的
  • 感谢您的澄清 :-)
【解决方案2】:

要删除第一行中的所有 |,,您可以将此 sed 传递给您的 sqlite3 命令:

sqlite3 db.sqlite3 "your_query" | sed '1s/[,|]//g' > output.csv

【讨论】:

    【解决方案3】:

    要获得正确的 CSV 文件(即使某些字段有逗号也可以正确引用),告诉 sqlite3 生成 CSV 文件:

    sqlite3 -csv db.sqlite3 "select ..." > output.csv
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2016-10-06
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多