1

Oracle データベースを SQL Server 2005 に移行しようとして失敗しました。問題は、Oracle の「LONG」テキストを SQL varchar に移行することです。移行が完了した後、Oracle データベースでチェックしているフィールドからデータの最初の 100 文字のみを取得します。SSMA for Oracle のデータ ビューに 100 文字を超えるデータが表示されます。

以前の調査の後、明示的な変換ルールを設定する必要があるように見えたので、Oracle の「LONG」を SQL VARCHAR(8000) にマップしましたが、宛先テーブルの列は適切なサイズになりました (スキーマは必要に応じて変更されました)。 、挿入されたテキストは常に最初の 100 文字に切り捨てられます。

この質問: Oracle の長いテキストは、SSIS ソースによって短縮されましたか?

類似しており、SSISがOLEDBドライバーで発生する可能性のある問題を指摘しているようですが、これが関連しているかどうかはわかりません(関連している場合でも、これを修正するために何をすべきかわかりませんSSMA)。

誰か SQL Server Migration Assistant の専門家がいますか?

4

1 に答える 1

1

究極の解決策は、組み込みの Oracle 関数を使用して、テーブルからデータを引き出し、CLOB として新しいテーブルに挿入するクエリを作成することでした (SSMA は自動的に varchar(MAX) として正しく処理し、切り捨てません)。 .

sqlplus で次のようなコマンドを使用しました。

create table schema.my_new_table as
select primary_key_field, to_lob(troublesome_long_column) troublesome_long_column
from schema.original_table;

主キー フィールドを含めたので、各行を元のテーブルに関連付けることができます。「to_lob」関数は LONG を CLOB に変換します。これにより、新しいテーブル内のデータの変換が機能します。

元のテーブルを変更し (そして、変換されたデータを含む新しい列を追加しただけ)、既存のテーブルについては何も変更できませんでした。

于 2013-10-15T13:57:32.563 に答える