• 締切済み

OracleからSQLServer 2008へのデータのインポート

Oracleからデータを取得し、SQL Server 2008へデータをインポートした際に、下記のエラーが発生します。これはどういう状態でしょうか? データ長がオーバーしているという事はないはずですので、何か別の問題がおきているのかと思われますが。。 どなたか是非、ご教授お願い致します。 メッセージ エラー 0xc02020c5: データ フロー タスク 1: 列 "xxxxxxxxx" (41) を列 "xxxxxxxxx" (485) に変換しているときに、データ変換に失敗しました。この変換により、状態値 4 と状態を示すテキスト "テキストが切り捨てられたか、または対象になるコード ページで 1 つ以上の文字が一致しませんでした。" が返されました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc020902a: データ フロー タスク 1: "出力列 "xxxxxxxxx" (485)" が切り捨ての発生により失敗しました。"出力列 "xxxxxxxxx" (485)" の切り捨て行の処理により、切り捨てによる失敗が示されます。ここに示されたコンポーネントのオブジェクトで切り捨てエラーが発生しました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047022: データ フロー タスク 1: SSIS エラー コード DTS_E_PROCESSINPUTFAILED。入力 "データ変換の入力" (446) の処理中に、コンポーネント "データ変換 0 - 0" (445) の ProcessInput メソッドがエラー コード 0xC020902A で失敗しました。このコンポーネントは、ProcessInput メソッドからエラーを返しました。このエラーはコンポーネントに固有のものですが、致命的なエラーであるため、データ フロー タスクの実行は停止されます。このエラーの前に、エラーの詳細が記載されたエラー メッセージが報告されている可能性があります。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc02020c4: データ フロー タスク 1: エラー コード 0xC0047020 により、データ フロー タスク バッファに行を追加できませんでした。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047038: データ フロー タスク 1: SSIS エラー コード DTS_E_PRIMEOUTPUTFAILED。コンポーネント "変換元 - xxxxxxxxx" (1) の PrimeOutput メソッドからエラー コード 0xC02020C4 が返されました。パイプライン エンジンが PrimeOutput() を呼び出したときに、このコンポーネントからエラー コードが返されました。このエラー コードの意味はコンポーネントで定義されていますが、これは致命的なエラーであるため、パイプラインの実行は停止されました。このエラーの前に、エラーの詳細が記載されたエラー メッセージが報告されている可能性があります。 (SQL Server インポートおよびエクスポート ウィザード)

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

なるほど、直接ですか。 ・1つはエラーになった列は表示されていると思いますので、その列のOracle/SQL Server両方のデータ型・長さを教えて頂けますか? ・もう一つはエクスポート先にSQL Server側のテーブルを自動生成にして実行してみてください(何かダミーテーブル名で)。 それがうまくいくなら、出来上がったテーブルのデータ型と比較してみてください。

noname#85330
質問者

お礼

>>もう一つはエクスポート先にSQL Server側のテーブルを自動生成にし>>て実行してみてください(何かダミーテーブル名で)。 素人で申し訳ありません。 自動生成でのインポートとはどうやるのが普通でしょうか? SQLServer2008 だとテーブルの枠を作成せずに、インポートしようとすると、エラーになりますよね? 何か、自動作成の方法が別にあるのであればヒントをいただけますか?

noname#85330
質問者

補足

jamshid6さん 素人相手にありがとうございました。 何とか、テーブル自動生成のやり方がわかりました。 無事にインポート出来ました。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

>Oracleからデータを取得し、SQL Server 2008へデータをインポート テキスト経由でしょうか? テキスト経由の場合、SQL Serverのフィールド以前に、フラットファイルソースの列定義のデフォルト(文字列50文字)に引っ掛かって50文字以上は切捨て扱いになるので、「データソースの選択」画面の「詳細設定」で確認してみてください。

noname#85330
質問者

お礼

早速のお返事ありがとうございます。 ちなみにテキスト経由ではなく、直接のデータインポートです。 インポートデータ長は、最高でも34文字なので、デフォルトの50文字まで達しておりません。 なので、『フラットファイルソースの列定義のデフォルト(文字列50文字)』に引っ掛かる可能性は低いかと・・。