5

SQL Server 2005からいくつかのテーブルをエクスポートしてから、それらのテーブルを作成してOracleに入力しようとしています。

私は約10個のテーブルを持っており、4列から25列までさまざまです。制約/キーを使用していないので、これはかなり簡単なはずです。

最初に、テーブル構造を取得するためのスクリプトを生成し、次にOracle構文標準に準拠するようにスクリプトを変更しました(つまり、nvarcharをvarchar2に変更しました)

次に、csvフラットファイルを作成するSQLServerエクスポートウィザードを使用してデータをエクスポートしました。ただし、私の主な問題は、SQLServerに列名を二重引用符で囲むように強制する方法が見つからないことです。私の列の1つにコンマが含まれているため、SQLサーバーが列名を引用するメソッドが見つからない限り、これをインポートする際に問題が発生します。

また、私は難しいルートを進んでいますか、それともこれを行うためのより簡単な方法がありますか?

ありがとう

編集:引用することで、csvの列の値を引用することになります。たとえば、次のようなアドレスを含む列があります

101 High Street、Sometown、Some county、PO5TC053

次のように変更しないと、CSVの読み込み時に問題が発生します

「101HighStreet、Sometown、Some county、PO5TC053」

4

3 に答える 3

5

SQLDeveloper でいくつかのオプションを調べた後、または手動でエクスポート/インポートを試みた後、目的の結果が得られ、使いやすい SQL Server 管理スタジオのユーティリティを見つけました。次の操作を行います。

  1. SQL Server のソース スキーマに移動する
  2. 右クリック > データのエクスポート
  3. ソースを現在のスキーマとして選択
  4. 「Oracle OLE プロバイダー」として宛先を選択します
  5. プロパティを選択し、サービス名を最初のボックスに追加し、次にユーザー名とパスワードを追加します。必ず「パスワードを記憶する」をクリックしてください
  6. クエリを入力して、移行する目的の結果を取得します
  7. テーブル名を入力し、「編集」ボタンをクリックします
  8. マッピングを変更し、nvarchars を varchar2 に、INTEGER を NUMBER に変更します
  9. 走る
  10. 残りのテーブルに対してプロセスを繰り返し、将来これを行う必要がある場合はジョブとして保存します
于 2009-11-13T14:33:55.813 に答える
1

SQLDeveloper 移行ツールを使用する

オラクルで列名を引用することは、使用すべきではないと思います。それはあらゆる種類の問題を引き起こします。

于 2009-11-13T11:37:49.917 に答える
1

ロバートが言ったように、列名を引用しないことを強くお勧めします。その結果、データをインポートするときだけでなく、SQL ステートメントでその列を参照するときはいつでも、それらを引用符で囲む必要があります。そうです、それはおそらくプログラム コードでも同様です。SQL ステートメントの作成が非常に面倒になります。

あなたが書いていることから、列名を参照しているのか、これらの列のデータを参照しているのかわかりません。(SQLServer は本当に列にカンマを使用できますか? 正当な理由があるとしたら、私は本当に驚きます!) 列の内容を引用することは、文字列のような列に対して行う必要があります (ただし、他の文字は通常機能することがわかりました)。引用符を「エスケープ」する必要性が別の問題になるため、より良い)。CSV でエクスポートする場合は、オプションにする必要がありますが、エクスポート ウィザードに慣れていません。

データを移動するための別のアイデア (プロジェクトの規模によって異なります) は、ETL/EAI ツールを使用することです。Pentaho スイートとその Kettle コンポーネントをいじってみました。ある場所から別の場所にデータを移動するためのさまざまなオプションが提供されました。単純な転送には少し大きすぎるかもしれませんが、対応するボリュームのある大きな「移行」であれば、良いオプションかもしれません.

于 2009-11-13T14:08:13.433 に答える