Estou tentando importar um arquivo CSV para um banco de dados com o PowerShell, mas até agora não tenho sorte.
Este é o meu código (com base neste fonte ):
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
}
Onde $path = C:\Users\Administrator\Desktop\TestFolder\testfile.txt
O DataTableConnect é um módulo que inclui o este script e o script .org / 2119.
Não sei bem onde está o meu problema, todas as partes individuais parecem funcionar bem, a única coisa que acho que pode ser o problema é que $DataTable
retorna um monte de system.data.datarow
. No entanto, outros Q & de troca de pilha dizem que isto é esperado.
Obrigado, qualquer ajuda é muito apreciada.
EDIT01: Eu não estou recebendo nenhum erro ou nada. Eu escrevi o código em um arquivo .ps1 e depois o executei pelo PowerShell 2.
Acabei de notar que, se eu o executar sem o trabalho (assim o código fica assim):
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
Eu recebo alguns erros:
Write-DataTable : Write-DataTable :System.Management.Automation.MethodInvocationException: Exception calling "WriteToServer" with "1" argument(s): "The given value of type String from the data source cannot be converted to type date of the specified target column." ---> System.InvalidOperationException: The given value of type String from the data source cannot be converted to type date of the specified target column. ---> System.FormatException: Failed to convert parameter value from a String to a DateTime. ---> System.FormatException: String was not recognized as a valid DateTime.
Todas as colunas no arquivo de texto são válidas e correspondem ao tipo de dados da coluna sql. Está me dando este erro porque está importando tudo como texto? Se sim, como eu evitaria isso?
EDIT02: Altero o data_types de todas as colunas para texto (ou varchar s) e, de fato, ele é importado corretamente agora. Assim, parece importar as colunas / dados como texto (simples).
Tags powershell csv