Powershell将制表符分隔的CSV转换为不带引号的逗号分隔的CSV

时间:2020-08-04 12:25:55

标签: powershell csv double-quotes tab-delimited dataloader

我们从COGNOS外部系统的公共文件夹中获得一个制表符分隔的CSV 。无法通过Dataloader CLI上传到Salesforce。

com.salesforce.dataloader.exception.DataAccessRowException:错误 读取第0行:数据列(98)的数量超过 标头中的列(97)

但是,如果您在MS Excel中打开csv,并另存为新的CSV(UTF-8),然后将其传递到数据加载器CLI,则它可以正常工作。

EXCEL转换文件的区别似乎是逗号分隔而不是Tab。

然后我尝试使用以下命令将原始制表符分隔的CSV转换为逗号分隔的CSV,

import-csv source.csv -delimiter "`t" | export-csv target.csv -notype

但是它的输出带有引号,Data Loader现在与File一起运行,但是没有将任何内容导入到Salesforce中,似乎无法正确识别字段名称。

然后我在下面的命令中尝试删除双引号,

import-csv source.csv -delimiter "`t" | export-csv target.csv -notype
(Get-Content target.csv) | Foreach-Object {$_ -replace '"', ''}|Out-File target.csv

但是这导致了索引超出范围错误,这还不清楚。

对Data Loader CLI进行此转换的最佳方法是什么? 什么可使这种转换与EXCEL的转换相同?

高度赞赏任何建议,想法和帮助,有助于实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:1)

SalesForce对CSV文件严格使用rules。另外,在this page上,一次最多只能导入50000条记录。

这里的主要内容是文件必须为UTF8格式。 需要在值两边加上引号。

这应该做到(假设您在Csv中记录不超过50000条):

Import-Csv -Path 'source.csv' -Delimiter "`t" | Export-Csv -Path 'target.csv' -Encoding UTF8 -NoTypeInformation

(source.csv是从COGNOS接收的TAB分隔文件)

相关问题