web-dev-qa-db-ja.com

テキストが切り捨てられたか、アンピボットの主キーを含むターゲットコードページで1つ以上の文字が一致しませんでした

フラットファイルをoledbターゲットSQLサーバーデータベースにインポートしようとしています。

ここに私にトラブルを与えているフィールドがあります:

enter image description here

そのフラットファイル接続のプロパティ、特にフィールドは次のとおりです。

enter image description here

エラーメッセージは次のとおりです。

[ソース-18942979103_txt [424]]エラー:データ変換に失敗しました。列「recipient-name」のデータ変換は、ステータス値4およびステータステキスト「テキストが切り捨てられたか、1つ以上の文字がターゲットコードページで一致しませんでした」を返しました。

私は何を間違えていますか?

これは古い質問です。長さを増やしたり、データ型テキストに変更したりして失敗した後、私がそれを解決した方法は、xlsxファイルを作成してインポートすることでした。すべての列をvarchar(50)として設定する代わりに、データ型を正確に検出しました。その列のnvharchar(255)もそれを行っていたはずです。

18
Chookoos

これが私にとって問題を解決したものです。 Excelに変換する必要はありませんでした。 「テキストストリーム」にデータソースを選択するときに、DataTypeを変更しました(図1)。 「マッピングの編集」ダイアログをチェックして、サイズの変更を確認することもできます(図2)。

図1

enter image description here

図2

enter image description here

33
ADH

この問題は、ソースデータ(xls、csvなど)を並べ替えて、ファイルの一番上に最長のテキスト値が表示されるようにすることで解決しました。 Excelは素晴らしいです。挑戦的な列でLEN()関数を使用します。データセットの一番上にある最も長い値で、その長さの値で並べ替えます。セーブ。インポートを再試行してください。

16
Eric Hrnicek

SQL Serverは、適切なデータ型を提案できる場合があります(デフォルトで適切な型を選択しない場合でも)-「候補型」ボタン(上記のスクリーンショットに表示)をクリックすると、SQL Serverでソースをスキャンできますエラーをスローしているフィールドのデータ型を提案します。私の場合、20000行をスキャンして候補を生成することを選択し、結果の推奨データ型を使用して問題を修正しました。

6
user756366

実際には技術的な解決策ではありませんが、SQL Server 2017のフラットファイルのインポートは完全に刷新され、5回のクリックで大容量のファイルをインポートしました。

enter image description here

2
Matthew Evans

SQl Management Studioのデータインポートは、最初の数行を見て、ソースデータの仕様を決定します。

最も長いテキストが先頭になるようにレコードを移動します。

2
Pinch

2つの異なるデータベース(DB2とSQL)に対して同様の問題が発生しました。最後に、DB2からのソースクエリでCASTを使用して解決しました。また、ソース列をvarcharに適合させ、無駄な空白スペースを回避することで、クエリを使用することも活用しています。

CAST(RTRIM(LTRIM(COLUMN_NAME)) AS VARCHAR(60) CCSID UNICODE 
   FOR SBCS DATA)  COLUMN_NAME

ここで重要な問題は、CCSID変換です。

1
JossWs

「UNICODE」チェックボックスをオンにして解決しました。下の画像リンクをクリックしてください:

Image


1
Anand Bhosekar

上記で提案されたアプローチ(@chookoos、 このq&a Excelブックに変換)およびインポートは、これらの種類の問題を解決しますが、このソリューション- 別のq&aのこのソリューション は優れているためcsv、tsv、またはtxtファイルを使用して、Microsoft製品関連のソリューションを作成せずに必要な微調整を実行できます enter image description hereenter image description here

1
Albert

上記のどれも私にとってはうまくいきませんでした。ソースファイルのExcelファイルを単一のxls Worksheet Excel 5.0/95として保存し、列見出しなしでインポートすることで問題を解決しました。また、SQLにテーブルを作成させる代わりに、テーブルを事前に作成し、手動でマップしました。

0
TonyE

通常、接続マネージャーでは50文字のままである可​​能性があるため、接続マネージャー->詳細に移動して100に変更するか、十分に大きい場合は1000にすることで問題を解決しました

0
user11791703