【发布时间】:2020-11-24 13:09:23
【问题描述】:
我们从 COGNOS 外部系统的公用文件夹中获得 制表符分隔的 CSV。这无法通过 Dataloader CLI 上传到 Salesforce。
com.salesforce.dataloader.exception.DataAccessRowException:错误 读取第 0 行:数据列数(98)超过 标题中的列 (97)
但是,如果您在 MS Excel 中打开 csv,并将其另存为新的 CSV (UTF-8),然后将其传递给数据加载器 CLI,则它可以正常工作。
EXCEL 转换文件的区别似乎是逗号分隔而不是制表符。
然后我尝试使用以下命令将原始制表符分隔的 CSV 转换为逗号分隔的 CSV,
import-csv source.csv -delimiter "`t" | export-csv target.csv -notype
但是这个输出有引号,数据加载器现在与文件一起运行,但没有将任何内容导入 Salesforce,它似乎无法正确识别字段名称。
然后我尝试以下命令删除双引号,
import-csv source.csv -delimiter "`t" | export-csv target.csv -notype
(Get-Content target.csv) | Foreach-Object {$_ -replace '"', ''}|Out-File target.csv
但这导致 Index out of range 错误,不清楚。
为 Data Loader CLI 执行此转换的最佳方法是什么? 什么可以让这个转换和EXCEL的转换一样?
非常感谢任何建议、想法、帮助实现这一目标。
谢谢!
【问题讨论】:
-
数据中是否包含逗号?
-
最简单的方法是升级到powershell-7.0,然后使用
(Import-Csv -Path '.\source.csv' -Delimiter '`t') | Export-Csv -Path '.\target.csv' -Encoding UTF8 -UseQuotes AsNeeded。 -
@T-Me 数据中没有逗号。
-
嗨@Compo,感谢您的建议。服务器只有5.1,我同意你的看法。无论如何我都会试一试。
标签: powershell double-quotes csv dataloader