2016-04-29 30 views
0

を取得します私は、私は元の.txtからのデータを書き込むために使用しようとしていますPowerShellスクリプトを持って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')" 

私の実際のコード挿入するヘッダー/列は約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

答えて

0

は、テーブルのスキーマをチェックし、このエラーは通常、原因表の列定義タイプの違いに示し、PowerShellのデータは、あなたがそれに格納するタイプ。

+0

フィールドを調べて、すべてのデータ型が一貫しているように見えますが、単純な数値フィールドを除いてすべてのデータを1つのテストファイルから削除しましたが、空のフィールドが原因であるかどうかはわかりません問題。 –

+0

クエリの構文が正しいか、引用符のためにリテラルフィールド名を渡していますか。 –

+0

私はそれを理解しました、それはクエリの構文エラーでした、私はそれがリテラルを渡していたと信じています。私は引用符を逃れるためにコードを変更し、ヘッダーをvarsに割り当て、その作業を今行っています。同様に "$ table(filename、size)VALUES(' '$ Name' '、' '$ FileSize'')に挿入します。 } –

関連する問題