Plus COPY コマンド

  



  
用途	ローカル・データベースまたはリモート・データベースの表へ、問合せのデータをコピーします。

COPY {FROM username[/password]@database_specification |
  TO username[/password]@database_specification |
  FROM username[/password]@database_specification TO
  username[/password]@database_specification}  
  {APPEND|CREATE|INSERT|REPLACE} destination_table[(column,
  column, column ...)] USING query

項目の説明	次に各項目を説明します。

username[/password]
	複写元(FROM句)および複写先(TO句)のユーザー名/パスワードを指定します。FROM句およびTO句のどちらの句も、
	パスワードを指定しないと、入力要求が表示されます。入力したパスワードは画面表示されません。

database_specification
	接続するノード名およびデータベースを指定します。FROM句にはコピー元の、TO句には複写先となるデータベー
	スを指定します。使用しているコンピュータのSQL*Net通信プロトコルに応じた構文を使用します。詳細について
	は、使用しているプロトコルのSQL*Netマニュアルを参照するか、または担当のDBAに相談してください。

destination_table
	データを作成、追加する表を指定します。

(column, column, column...)
	destination_tableに指定した表の列名を指定します。小文字または空白を含める場合、列名を2重引用符で囲みます。
	列は、問合せの列と同じ数だけ指定しなければなりません。COPYコマンドによって
	destination_tableが作成される場合、列を指定しない際には、複写先の表の列名には複写元と同様の名前が自動的
	に命名されます。

USING query	コピーする行および列を指定するSQL問合せ(SELECTコマンド)を指定します。

FROM username[/password][ @database_specification]
	ユーザー名、パスワード、およびコピーするデータを含むデータベースを指定します。FROM句を指定しない場合、
	複写元のデータベースとして、SQL*Plusが接続されているデータベース(すなわち、他のコマンドによって指定され
	ているデータベース)が採用されます。これはデフォルトです。複写元および複写先のデータベースを設定するため
	には、FROM句とTO句の両方を指定しなければなりません。

TO username[/password][ @database_specification]
	複写先の表を含むデータベースを指定します。TO句を指定しない場合、複写先として、SQL*Plusが接続されている
	データベース(すなわち、他のコマンドによって指定されているデータベース)が指定されます。複写元および複写
	先のデータベースを設定するためには、FROM句とTO句の両方を指定しなければなりません。

APPEND	表が存在する場合、問合せから行をdestination_tableに挿入します。destination_tableがない場合は、COPYコマ
	ンドによって作成されます。

CREATE	まず分作成された後、問合せからdestination_tableに行を挿入します。destination_table
がすでに存在する場合、COPYコマンドによってエラー・メッセージが表示されます。

INSERT	表が存在する場合、問合せからdestination_tableに行を挿入します。destination_tableがない場合、COPYコマンド
	によってエラー・メッセージが表示されます。

REPLACE	destination_tableから既存の行を削除します。そして、表が存在する場合は、問合せから
	destination_tableへ行を挿入します。表がない場合、COPYコマンドによって作成されます。表が存在する場合は、
	COPYによって既存の表を削除してから、コピーするデータを含む表に置き換えられます。

使用方法	OracleとOracle以外のデータベースでデータをコピーする場合、NUMBER列は複写先の表でDECIMAL列に変更さ
	れます。けれども、Oracleデータベース間でコピーする場合は、精度が指定されていないNUMBER列はDECIMAL(38)列に
	変更されます。Oracleデータベース間でデータをコピーする際は、(CREATE TABLE、INSERTなどの)SQLコマンドを使用
	して、列に希望する精度が指定されていることを確認してください。

	SQL*PlusのSETコマンドで指定するLONG変数により、コピーする列の長さが制限されます。LONG変数に指定した値より
	も長いデータを含む列がある場合、COPYコマンドによって、そのデータは切り捨て処理が行われます。

	COPYコマンドが正常に実行されると、SQL*Plusにより、各処理の最後にコミットが行われます。SQL*Plus SETコマンド
	のCOPYCOMMIT変数のnを正数に指定した場合、レコードがn回、バッチでコピーされるたびにコミットが行われます(バ
	ッチのサイズは、SQL*Plus SETコマンドのARRAYSIZE変数を使用して指定します)。

	オペレーティング・システムによっては、データベース指定の箇所を二重引用符で囲む必要があるかもしれません。

使用例	次のコマンドを指定して、データベースHQのEMP表全体を、データベース WESTのWESTEMP表にコピーするとします。
	WESTEMP表がすでにある場合、その内容が置き換わります。WESTEMPの列の名前は、複写元であるEMP表の列と同様です。

SQL> COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST -
> REPLACE WESTEMP -
> USING SELECT * FROM EMP

次のコマンドを指定して、データベースHQのEMPから選択したレコードを、SQL*Plusが接続されているデータベースにコピーす
るとします。SQL*Plusにより、SALESMENが自動的に作成されます。ここでは、EMPNOおよびENAMEという列をコピーするとします
。複写先でこれらの列の名前をEMPNOおよびSALESMANに置き換えます。

SQL> COPY FROM SCOTT/TIGER@HQ -
> CREATE SALESMEN (EMPNO,SALESMAN) -
> USING SELECT EMPNO, ENAME FROM EMP -
> WHERE JOB='SALESMAN'
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ