2016-12-29 9 views
0

Visual Studio 2013およびSQL Server 2014にSSDTを使用しています。ExcelスプレッドシートからExcelソースおよびOLE DBの宛先を使用してSQL Serverテーブルにデータをインポートしています。私はこのString or binary data would be truncated. OLE DBの宛先でエラーが発生します。私はすべてをチェックしましたが、VARCHARフィールドが255以上でなく、Excel接続文字列にIMEX = 1を使用していません。テストのために一度に1つのフィールドをインポートしようとしましたが、同じエラーが発生していて、それが何であるかわからないのです。SSISを使用したSQL ServerおよびExcelスプレッドシートのデータインポートの問題

SSISエラー:

[OLE DB Destination [28]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The statement has been terminated.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "String or binary data would be truncated.".

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE DB Destination" (28) failed with error code 0xC0202009 while processing input "OLE DB Destination Input" (59). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.
There may be error messages posted before this with more information about the failure.

+0

表示されている内容と取得する内容がExcelで同じであるとは限りません。データをテキストファイルにエクスポートし、新しいExcelファイルにインポートし直します。テキスト列を切り捨てるだけでなく、数値の取り消しが正しいかそれ以上であることを確認してください。そしていつものようにExcelを使って...幸運。これがペストとして避けられ、常にテキストファイルで置き換えられる理由です。 –

+0

フィールドを3000またはそれ以上の大きさに設定してから、データの長さを見つけてもう一度やり直してください。 –

+0

Excelファイルのどこかに、データベーステーブルの列には長すぎるフィールドがあります。それを見つけるための簡単な組み込みの方法はありません。ちょうど試行錯誤。 –

答えて

0

一度に一つのフィールドをインポートすると、エラーが出て、問題を持つ列でなければなりませんフィールド。 私が経験したことは、エクセルファイルが引用符( "")またはフィールド内の特殊文字を持ち、SQLテーブルにロードされたときに2つのフィールドを1つに結合していることです。 したがって、ExcelファイルをCSV形式で保存し、CSVファイルをインポートします。

関連する問題