在具有powershell作业的数据库中导入CSV文件


1

我试图用PowerShell将CSV文件导入数据库,但到目前为止我没有运气。

这是我的代码(基于此来源):

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

我得到了很多错误:

Write-DataTable:Write-DataTable:System.Management.Automation.MethodInvocationException:使用“1”参数调用“WriteToServer”的异常:“数据源中String类型的给定值无法转换为指定的类型日期目标栏。“ ---> System.InvalidOperationException:数据源中String类型的给定值无法转换为指定目标列的类型日期。---> System.FormatException:无法将参数值从String转换为DateTime。---> System.FormatException:String未被识别为有效的DateTime。

文本文件中的所有列都是有效的,并且对应于sql列的数据类型。它是否给我这个错误,因为它将所有内容导入为文本?如果是这样,我该如何避免这种情况?


EDIT02:我将所有列的data_types更改为text(或varchar),实际上它现在可以正确导入。因此,它似乎确实将列/数据导入为(普通)文本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.