Importar um arquivo CSV em um banco de dados com jobs do powershell

1

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).

    
por Ben Z. 21.03.2013 / 17:54

0 respostas