Я пытаюсь импортировать файл CSV в базу данных с помощью PowerShell, но пока мне не везет.

Это мой код (основанный на этом источник ):

Start-job   -Name 'ImportingData' `
        -InitializationScript {Ipmo DataTableConnect -Force -DisableNameChecking} `
        -ScriptBlock {$DataImport = Import-Csv -Header ("heading01","heading02","heading03") -Path $path
                $DataTable = Out-DataTable -InputObject $DataImport
                Write-DataTable -ServerInstance SERVER -Database DB_NAME -TableName TB_NAME -Data $DataTable
                }

куда $path = C:\Users\Administrator\Desktop\TestFolder\testfile.txt DataTableConnect - это модуль, который включает этот скрипт и .org / 2119 скрипт.

Я не совсем уверен, где моя проблема, все отдельные части работают нормально, единственное, что я думаю, может быть проблема в том, что $DataTable возвращает кучу system.data.datarow «S. Однако другие Q & A говорят о том, что это ожидается.

Спасибо, любая помощь очень ценится.


EDIT01: я не получаю никаких ошибок или ничего. Я написал код в файле .ps1, а затем запустил его через PowerShell 2.

Я просто заметил, что если я запускаю его без работы (таким образом код выглядит так):

Ipmo DataTableConnect -Force -DisableNameChecking
$DataImport = Import-Csv -Header ("heading01","heading02","heading03") -Path $path
$DataTable = Out-DataTable -InputObject $DataImport
Write-DataTable -ServerInstance SERVER -Database DB_NAME -TableName TB_NAME -Data $DataTable

Я получаю совсем немного ошибок:

Запись-DataTable: запись-DataTable   : System.Management.Automation.MethodInvocationException: исключение   вызов «WriteToServer» с аргументом (ами) «1»: «Заданное значение типа   Строка из источника данных не может быть преобразована в тип даты   указанный целевой столбец. "--- & gt; System.InvalidOperationException:   данное значение типа String из источника данных не может быть преобразовано в   введите дату указанного целевого столбца. --- & GT; System.FormatException:   Не удалось преобразовать значение параметра из String в DateTime. --- & GT;   System.FormatException: строка не была распознана как допустимый DateTime.

Все столбцы в текстовом файле являются действительными и соответствуют типу данных столбца sql. Это дает мне эту ошибку, потому что она импортирует все как текст? Если так, как бы мне этого избежать?


EDIT02: я изменяю data_types всех столбцов на текстовые (или varchar), и теперь он действительно правильно импортирует. Таким образом, кажется, что он импортирует столбцы / данные в виде (простого) текста.

Ben Z.
источник