1

Я пытаюсь импортировать файл 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), и теперь он действительно правильно импортирует. Таким образом, кажется, что он импортирует столбцы / данные в виде (простого) текста.

0