如何将字符串值中包含逗号的数据写入 csv 文件

如何将字符串值中包含逗号的数据写入 csv 文件

我需要使用基本的选择查询访问数据库并将结果输出写入文件中。使用 sqlcmd 我执行查询并将结果写入输出 csv 文件。

尝试以 Excel 形式打开此文件时,中间带有逗号的记录将显示为新列

我该如何克服这个问题?我们可以在 shell 脚本中处理这个问题吗?

答案1

你至少可以引用数据库中的每个字段,无论它是否需要——它仍然是有效的 CSV。不了解 Azure:在 Oracle 中,您使用 CHR(decimal_code) 定义特殊字符,并使用 || 连接分隔符和数据。所以 SQL 中的字段分隔符看起来像这样|| CHR(34) CHR(44) CHR(34) ||(这就是我过去在 awk 中构建查询的原因)。

令人沮丧的是数据可以包含双引号。您需要在带引号的字段中加倍,因此 : Said "Hello".: 变成 : "Said ""Hello"".": 并且这更难做到。

在 awk 中最多可以修复一个可以包含逗号的字段。假设字段 4 是可以包含逗号的字段。您可以截断字段 1-3 和 5-NF,完全引用字段 4,并将该行重新组装为正确的 CSV。如果这有帮助,请评论我。

您还可以在 CSV 字段中包含换行符,这也会弄乱每行的列。这也可以在 awk 中修复。由于换行符仅在带引号的字段中有效,因此具有奇数个引号的任何行都必须位于数据字段的中间,因此您只需预读,直到再次获得偶数个引号。

相关内容