• 締切済み

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 インポートおよびエクスポート ウィザード)

noname#85330
noname#85330

みんなの回答

  • 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文字)』に引っ掛かる可能性は低いかと・・。

関連するQ&A

  • CSVファイルのデータをDBに取り込みたい。

    お世話になります。 現在、日本郵便が提供している「郵便番号データダウンロード」を利用して、全国の郵便番号をダウンロードして、SQL Serverのデータベースに新しくテーブルとして追加しようとしています。 しかし、データをインポートしようとすると必ずエラーが起こってしまい・・・同じようなエラー解決法をネットで探したのですが、現在起こっているエラーの解決法と違う?もしくは私が理解していないだけかもしれないのですが、もし解決法がお分かりになれば、噛み砕いてご教授願えればと思います。 以下環境およびエラー文章です。 開発環境:SQL Server2005 動作環境:Windows XP 「フラットファイルソース」からダウンロードしてきたCSVファイルを取り込み、先頭データ行を列名とし「SQL Native Client」のサーバに変換しようとしてエラーが出ました。 - 実行しています (エラー) メッセージ エラー 0xc02020a1: データ フロー タスク: データ変換に失敗しました。列 "ChoName" のデータ変換から、状態値 4 と状態を示すテキスト "テキストが切り捨てられたか、または対象になるコード ページで 1 つ以上の文字が一致しませんでした。" が返されました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc020902a: データ フロー タスク: "出力列 "ChoName" (34)" が切り捨ての発生により失敗しました。"出力列 "ChoName" (34)" の切り捨て行の処理により、切り捨てによる失敗が示されます。ここに示されたコンポーネントのオブジェクトで切り捨てエラーが発生しました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0202092: データ フロー タスク: データ行 2050 で、ファイル "C:\Documents and Settings\Administrator\デスクトップ\加山\住所\ken_all\KEN_ALL.CSV" の処理中にエラーが発生しました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047038: データ フロー タスク: コンポーネント "変換元 - KEN_ALL_CSV" (1) の PrimeOutput メソッドからエラー コード 0xC0202092 が返されました。パイプライン エンジンが PrimeOutput() を呼び出したときに、このコンポーネントからエラー コードが返されました。このエラー コードの詳細はコンポーネントで定義されていますが、これは致命的なエラーであり、パイプラインの実行は停止されました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047021: データ フロー タスク: エラー コード 0xC0047038 により、スレッド "SourceThread0" は終了しました。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047039: データ フロー タスク: スレッド "WorkThread0" はシャットダウンの通知を受け取ったので終了処理中です。ユーザーがシャットダウンを要求したか、別のスレッド内のエラーが原因でパイプラインがシャットダウンされています。 (SQL Server インポートおよびエクスポート ウィザード) エラー 0xc0047021: データ フロー タスク: エラー コード 0xC0047039 により、スレッド "WorkThread0" は終了しました。 (SQL Server インポートおよびエクスポート ウィザード) よろしくお願いします。

  • データのインポートに失敗します。

    SQL Server2005を使用しているのですが、データのインポート時に下記のエラーメッセージが出て失敗します。 警告 0x802092a7: データ フロー タスク: 長さ 50 のデータ フロー列 "列 XXX" から、長さ 48 のデータベース列 "ABCDEF" にデータを挿入することにより、切り捨てが行われる可能性があります。 (SQL Server インポートおよびエクスポート ウィザード) このエラーの回避方法をご存知の方がいらっしゃいましたら教えてください。よろしくお願いします。

  • データのインポートについて

    SQL Server 2005 Developer Editionを使っています。 データのインポートに関して、ご教授をお願い致します。 ■質問 インポート(データベースを右クリックし、【タスク】より 【データのインポート】を選択している)機能について、 エラーを発生させずに、インポートをすることができるのか。 ■状況 エクセルにデータをエクスポートしたものを、インポートしようと したときに、エラーが発生します。そのテーブルデータは、 SQLでインサートすることはできるものの、インポート機能を使って インサートをすることができません。 ■知りたいこと ・インポートができない理由について。  ⇒インポートができる方法について。 ・インポート機能は、エラーがよく発生するものなのか。 以上、ご教授をお願い致します。

  • oracleデータのインポート&エクスポートについて

    oracleデータをインポートするにはSQL*LOADERを使用するのが一般的な方法の一つですが、 同じように、その逆であるエクスポートを行う場合はどのような手段を用いますか? 条件としては ・バッチ(シェル)で実行できる事。 ・SQL*LOADERでインポートする為のデータと互換性のあるフォーマット(CSV)である事。 ・ツールの追加購入は考えていません。

  • インポートできない。

    あるテーブルのデータをダンプしてエクスポート(export_utf8.sql)しました。 それを他のMysqlへインポートしようと以下のコマンドを実行したところ、 mysql -p --default-character-set=utf8 db < export_utf8.sql 以下のエラーが出力されました。 Unknown MySQL server host 'border="1"' (1) おそらく、エスケープ関連でコケているものかと思いますが、 どうすればインポートできるのかわかりません。 ご存知の方、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • データのインポートの速度について

    mysqlの1個のテーブル(約1万行)をphpMyAdminでエクスポートしました。エクスポートは一瞬で終わりました。 それを再びphpMyAdminからインポートしようとしたのですが、データが重いらしくタイムアウトのエラーが出てしまいました。 sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 きっとphpMyAdminの方で、エクスポートする時、「これくらいのかたまりずつ区切っておかないと、スムーズにインポートできなくてエラーになっちゃうよ」と気を利かせて区切ってくれているのだろうと思います。 仕方ないので、sqlファイルを「約200行ずつのinsert文」に分割して、phpMyAdminからインポートしました。 全部で1万行ほどのデータなので、50回ほどその作業を繰り返しました。 エクスポートはスムーズだったので、インポートがこんなに手間がかかるとは思っていませんでした。 最初にその1万行のデータをテーブルに読み込ませたのは、別のcsvファイルを load data infile したり、項目の並び順を入れ替えて insert したりするphpファイルを書いたのですが、さほど重くもなくスムーズに処理できました。 phpMyAdminを使わない方法の方が圧倒的に早い気がするのですが、大きいデータをインポートする際のスムーズな方法がありましたら、アドバイスいただけますでしょうか?

  • PostgreSQLのデータインポートについて

    初めて質問させていただきます。どうかお教えください。 今2つの別々の共用レンタルサーバーに、 それぞれPostgreSQLが組み込まれており、 それぞれデータ以外は、同じ状態になっています。 そこで、片方のサーバーからもう一方のサーバーへデータを移して、 同じデータの状態にしたいのです。 今までは、サーバー上にあるphpPgAdminというツールから、 テーブルのデータをエクスポートし、その後もう一つのサーバーの phpPgAdminにてインポートしていたのですが、 データの量が多くなったために、上記でエクスポートしたデータを テキストエディタで20分割し、少しづつインポートしなければならなくなりました。(データ量が多いとインポート時にphpPgAdminでエラーが発生するようです) 共用レンタルサーバーで利用できる 多量のデータをインポートできるツールなどはございませんでしょうか hiroko

  • SQLServer2005でインポートする方法について

    SQL Server 2005 Management Studio Expressで、ACCESS2000のデータをインポートしたいのですがどうすればいいですか? ご教授お願いします。

  • SQL serverへのインポートについて

    SQL Serverのデータベースを別のPCに移行する必要が出て、Excelファイルにエクスポートしたのですが、新しいPCへのインポートでエラーになってしまいます。 【旧PC】 Windows XP (エディションは不明)+SQL Server 2008 【新PC】 Windows 7 professional + SQL Server 2014 Express ※技術習得を兼ねているためとりあえず無料版を使用 詳細は以下の通りです。 ○手順 1.【旧】からExcelへエクスポート  ・[データマッピングの確認画面]で"失敗した可能性のあるcharからVarCharへの変換"と表示。  ・Excelファイルを確認した限りだと、値そのものは正しくエクスポートされている。 2.【旧】のデータベースをスクリプト化 3.【新】のコマンドラインで2.のスクリプトを実行(sqlcmd)  ・データベースの構成が正しく移行されている事は確認済み。 4.Excelから【新】へインポート ○結果  複数のテーブルで変換エラーが発生し、処理を停止。 ○補足事項 ・フラットファイルにエクスポートすると、正しくインポートされる。  (但し手順1と同じ画面で同じ警告が表示される) 最初はエクスポート時の警告を疑ったのですが、フラットファイルからは正しくインポートできたので、それが原因では無さそうです。ただそれだと手間なので、どうにかしてExcel経由で移行したいと思っています。

  • SQL SERVERバックアップ・インポート

    本番環境のSQL SERVERのデータを開発環境のSQL SERVERへ SQL SERVER ManagementStudioのインポート・エクスポートウィザードを使い移動させているのですが、自動化出来ないかと考えております。 【本番環境】 WindowsServer2008R2(32bit) SQL SERVER 2008R2 【開発環境】 WindowsServer2008R2(64Bit) SQL SERVER 2008R2 EX ◎現在の作業手順 1.開発環境上のテーブルを一括削除 2.開発環境側のSQL MAGAGEMENT STUDIOのインポートおよびエクスポートウィザードにて、本番環境のテーブルを一括インポート 問題は、テーブルが50以上あり、内100万行以上のテーブルが複数ありますので、移行中に本番環境の動きが悪くなることです。 そのため、業務終了後にバッチでデータ移行ができればと考えております。 ※なお、本番環境については閲覧権限しかないため、本番環境にストアドを作成するには ベンダーへ依頼する必要があるので、できれば避けたいと考えております。 上記の件について、アドバイスを頂けましたら幸いです。