使用“总计”信息删除 csv 文件中的最后一行

Posted

技术标签:

【中文标题】使用“总计”信息删除 csv 文件中的最后一行【英文标题】:Remove last lines in csv file with "Totals" info 【发布时间】:2017-07-06 20:33:20 【问题描述】:

我有一个大的 csv 文件,我正在使用以下示例格式将其保存到 Google Cloud Storage:

id,revenue
1,100
2,100
...
Totals
All,12000

或者:

title,profit
titanic,200
avatar,400
fox total,600
paramount total,400
grand total,1000

我希望能够删除总计之后(包括总计)的所有行,因为这不是 csv 文件中真正有效的信息(它是数据下方 csv 的更多汇总信息)。

有没有办法删除它?目前,我们将 csv 文件保存到 Google Cloud Storage,然后通过 Big Query 中的 csv-import 直接导入。也许,当通过 BigQuery 或类似的方式导入 csv 时,有一种方法可以将行号附加到 csv 文件中,所以我们可以在最后执行删除语句?

【问题讨论】:

【参考方案1】:

如果在导入后删除 MAX() 行怎么办?

#standardSQL
DELETE
FROM `project.dataset.table` 
WHERE revenue = (
  SELECT revenue
  FROM `project.dataset.table` 
  ORDER BY taxi_trips DESC
  LIMIT 1
)

或者选择 id "All":

#standardSQL
DELETE
FROM `project.dataset.table` 
WHERE id = "All"

【讨论】:

我们怎么知道max_row?如果没有自动递增的 ID 怎么办(上面修改过的问题)。另外,id 通常不是“All”,这只是一个例子。 如果是所有正数相加的总和,那么它必须是最大的数 - 或者不是? 不,不是小计或记录计数。也许更直接的问题是:有没有办法使用 BigQuery 将行号添加到 csv 导入中?另外,这不是常见的情况吗(我看到大约 1/3 的 csv/excel 文件在底部显示总计信息,并且几乎总是显示任何财务信息。) 没有办法做到这一点,但你可以file a feature request。 @ElliottBrossard 谢谢 Elliott,我会加一张票。

以上是关于使用“总计”信息删除 csv 文件中的最后一行的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有sed的情况下替换csv文件中的一行[重复]

使用 Powershell 从文件中删除最后一行

如何在现有 csv 文件中写入新行而不将其附加到最后一行?

使用 awk 忽略 CSV 文件字段中的逗号

删除同一目录中多个CSV文件中的前两列和最后一列

使用逻辑应用跳过 CSV 文件的最后一行