Добавьте двойные кавычки ко всем столбцам, разделенным запятыми, но не запятыми, которые уже заключены в двойные кавычки - PullRequest
0 голосов
/ 04 августа 2020

Я пробовал

(import-csv C:\file.csv) | export-csv C:\file.csv -NoTypeInformation -Encoding UTF8

Приведенный выше код работает, но требует некоторого времени для выполнения даже для файла размером <100 КБ (около 220 строк и 50 столбцов) </p>

Пример:

Содержимое в csv

row 1 - textOne,"text with a,comma",,sample

row 2 - textTwo, demo text ,,stack

вывод должен быть

row 1 - "textOne","text with a,comma","","sample"

row 2 - "textTwo","demo text","","stack"

1 Ответ

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

Вы можете ускорить процесс, используя Microsoft.VisualBasi c .FileIO.TextFieldParser для импорта csv вместо использования Import-Csv командлета.

Попробуйте, если это действительно быстрее:

Add-Type -AssemblyName 'Microsoft.VisualBasic'

# you'll need to use the full absolute path to the file
$file   = "C:\file.csv"

# older PowerShell versions use:
# $parser = New-Object Microsoft.VisualBasic.FileIO.TextFieldParser $file
$parser = [Microsoft.VisualBasic.FileIO.TextFieldParser]::new($file)
$parser.SetDelimiters(',')
$header = $parser.ReadFields()

$csv = while (!$parser.EndOfData) {
    $i = 0
    $row = [ordered]@{}
    foreach ($field in $parser.ReadFields()) {
        $row[$header[$i++]] = $field
    }
    [PSCustomObject]$row
}
# clean up
$parser.Dispose()

# export the csv in UTF8
$csv | Export-Csv -Path $file -NoTypeInformation -Encoding UTF8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...