PowerShell的SQL INSERT错误数据将被截断删除数据,并仍然得到错误

问题描述:

我有我试图使用从源.TXT数据写入到SQL表PowerShell的SQL INSERT错误数据将被截断删除数据,并仍然得到错误

Import-Csv $_.fullname -Header Z_AP_EXNUM,Z_AP_ID | ForEach-Object {Invoke-Sqlcmd ` 
     -Database $database -ServerInstance $server -Username $uid -Password $pwd ` 
     -Query "insert into $table VALUES ('$_.Z_AP_EXNUM','$_.Z_AP_ID')" 

我的实际代码PowerShell脚本有大约293个头/列插入。我收到的错误是字符串或二进制数据将被截断。该语句已终止。我进入了我的一个测试文件,并删除了所有数据,但几个标准字段仍然收到这些错误。我不知道什么可能导致插入失败。

错误:

Invoke-Sqlcmd : String or binary data would be truncated. The statement has been terminated. At C:\Users***\Desktop\script\scripy.ps1:79 char:111 + Z_AP_STR_CSEM5_9,Z_AP_STR_NAME5_10,Z_AP_STR_SCOR5_10,Z_AP_STR_CSEM5_10 | ForEach-Object {Invoke-Sqlcmd <<<< ` + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException + FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

检查表模式,这种错误通常表明由于列定义类型的表中的差异,PowerShell的数据输入您希望它来存储。

+0

我一直在看字段和所有的数据类型似乎是一致的,我从一个测试文件中删除所有的数据,除了一个简单的数字字段,仍然有相同的错误,不知道如果该字段为空导致问题。 –

+0

是我的查询语法正确,或者我通过文字字段名称,因为引号。 –

+0

我想通了,这是与查询语法错误,我相信它通过文字。我改变了我的代码以逃避引号,并将头文件分配给变量并且现在它的工作。类似于“插入到$ table(filename,size)VALUES(''$ name'',''$ FileSize'')” } –