Powershell Преобразование CSV с разделителями табуляции в CSV с разделителями-запятыми без кавычек - PullRequest
0 голосов
/ 04 августа 2020

Мы получаем CSV-файл с разделителями из внешней системы COGNOS в папке publi c. Это не удается загрузить в Salesforce через интерфейс командной строки Dataloader.

com.salesforce.dataloader.exception.DataAccessRowException: ошибка чтения строки № 0: количество столбцов данных (98) превышает количество столбцов в header (97)

Но если вы откроете CSV в MS Excel и сохраните как новый CSV (UTF-8), а затем передадите его в интерфейс командной строки загрузчика данных, он будет работать без каких-либо проблем.

Разница в конвертированном файле EXCEL, похоже, состоит в том, что он разделен запятыми, а не табуляцией.

Затем я попытался преобразовать исходный CSV с разделителями табуляцией в CSV с разделителями-запятыми, используя команду ниже:

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

Но в выводе есть кавычки, Data Loader теперь работает с файлом, но ничего не импортирует в 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 Ответ

1 голос
/ 04 августа 2020

SalesForce имеет строгие правила для файлов CSV. Кроме того, на этой странице указано, что за один раз можно импортировать не более 50000 записей.

Главное здесь то, что файл ДОЛЖЕН быть в формате UTF8. Необходимы кавычки вокруг значений.

Это должно сработать (при условии, что у вас не более 50000 записей в CSV):

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

(source.csv - это TAB- файл с разделителями, который вы получаете от COGNOS)

...