を取得します私は、私は元の.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
フィールドを調べて、すべてのデータ型が一貫しているように見えますが、単純な数値フィールドを除いてすべてのデータを1つのテストファイルから削除しましたが、空のフィールドが原因であるかどうかはわかりません問題。 –
クエリの構文が正しいか、引用符のためにリテラルフィールド名を渡していますか。 –
私はそれを理解しました、それはクエリの構文エラーでした、私はそれがリテラルを渡していたと信じています。私は引用符を逃れるためにコードを変更し、ヘッダーをvarsに割り当て、その作業を今行っています。同様に "$ table(filename、size)VALUES(' '$ Name' '、' '$ FileSize'')に挿入します。 } –