Я пытаюсь импортировать файл 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
. Однако, другие вопросы и ответы о стек-обмене говорят, что это ожидается.
Спасибо, любая помощь очень ценится.
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: Система.Управление.Автоматизация.MethodInvocationException: исключение, вызывающее "WriteToServer" с аргументом (ами)"1": "Данное значение типа String из источника данных не может быть преобразовано в дату типа указанного целевого столбца". ---> Система.InvalidOperationException: данное значение типа String из источника данных не может быть преобразовано в дату типа указанного целевого столбца. ---> Система.FormatException: не удалось преобразовать значение параметра из String в DateTime. ---> Система.FormatException: строка не была распознана как допустимый DateTime.
Все столбцы в текстовом файле являются действительными и соответствуют типу данных столбца sql. Это дает мне эту ошибку, потому что она импортирует все как текст? Если так, как бы мне этого избежать?
EDIT02: я изменяю data_types всех столбцов на текстовые (или varchar), и теперь он действительно правильно импортирует. Таким образом, кажется, что он импортирует столбцы / данные в виде (простого) текста.