外部ファイルまたはキーボードからデータベース・テーブルにデータをインポートします。
input into [ owner.]table-name
[ from filename | prompt]
[ format input-format ]
[ escape character character ]
[ escapes { on | off }
[ by order | by name ]
[ delimited by string ]
[ column widths (integer , .. . ) ]
[ nostrip ]
[ ( column-name, .. . ) ]
[ encoding encoding ]
input-format:
ascii | dbase | dbasell| dbaselll
| excel | fixed | foxpro | lotus
encoding:identifier または string
from 句 − 引用符で囲まれた文字列としてサーバに渡されるファイル名です。したがって、文字列は他の SQL 文字列と同じフォーマット要件に従います。特に、次のような場合です。
ディレクトリ・パスを示すには、円記号 (¥) を 2 つの円記号で表す必要があります。ファイル c: emp¥input.dat から employee テーブルにデータをロードするには、次の文を使用します。
input into employee from ‘c: ¥temp¥input.datí
パス名は、Interactive SQL が実行されているマシンでの相対的なパスです。
prompt − ロー内の各カラムにユーザが値を入力できるようにします。ウィンドウを使用するモードで動作している場合は、ダイアログが表示され、そこから新しいローの値を入力できます。Interactive SQL をコマンド・ラインで使用している場合は、コマンド・ラインで各カラムの値を入力するように要求されます。
format − 各値セットは、format 句に指定されたフォーマットで表すか、format 句を指定しない場合は set option input_format 文に指定されたフォーマットで表す必要があります。ユーザが input と入力するとダイアログが表示され、この入力フォーマットを使用して 1 行に 1 つのローを入力できます。
ファイル・フォーマットによっては、カラム名と種類に関する情報が含まれていることがあります。
input 文を実行したときにデータベース・テーブルがまだ存在していない場合は、この情報を使用してデータベース・テーブルが作成されます。この方法を使用すると、簡単にデータをデータベースにロードできます。テーブルを作成するための情報が含まれるフォーマットは、dbasell、dbaselll、foxpro、lotus です。
コマンド・ファイルからの入力は、end が含まれる行で終了します。ファイルからの入力は、ファイルの末尾で終了します。
次の input フォーマットを指定できます。
ascii − 入力行は、1 行が 1 ローを表す、値がカンマで区切られた ASCII 文字として扱われます。アルファベット文字列は、アポストロフィ (一重引用符) または引用符 (二重引用符) で囲むことができます。カンマを含む文字列は、一重引用符または二重引用符で囲む必要があります。文字列そのものに一重引用符または二重引用符が含まれる場合は、引用符を文字列内で使用するために引用符を 2 つ続けます。delimited by 句を使用して、デフォルト (カンマ) 以外のデリミタを指定することもできます。
認識される特別なシーケンスが他に 3 つあります。2 文字 (¥n) は改行文字を表し、"¥" は単一の円記号 (¥) を表し、¥xDD のようなシーケンスは 16 進コード DD の文字を表します。
dbase − ファイルは DBASEll フォーマットまたは DBASElll フォーマットです。Interactive SQL は、ファイル内の情報に基づいてファイル・フォーマットを確認しようとします。テーブルが存在しない場合には、テーブルを作成します。
dbasell − ファイルは DBASEll フォーマットです。テーブルが存在しない場合には、テーブルを作成します。
dbaselll − ファイルは DBASElll フォーマットです。テーブルが存在しない場合には、テーブルを作成します。
excel − 入力ファイルは Microsoft Excel 2.1 フォーマットです。テーブルが存在しない場合には、テーブルを作成します。
fixed − 入力行は固定フォーマットです。column widths 句を使用して、カラム幅を指定します。カラム幅を指定しない場合、ファイル内のカラム幅は、それに対応するデータベース・カラムの種類で必要とされる最大文字数と同じである必要があります。
改行文字と End of File シーケンスが組み込まれているバイナリ・カラムには、fixed フォーマットを使用できません。
foxpro − ファイルは FoxPro フォーマットです。テーブルが存在しない場合には、テーブルを作成します。
lotus − ファイルは Lotus WKS フォーマットのワークシートです。input は、Lotus WKS ワークシートの最初のローがカラム名であるとみなします。テーブルが存在しない場合には、テーブルを作成します。この場合、ファイル内の情報はカラムではなくセルに関するものなので、作成されるカラムの種類とサイズが正しくない可能性があります。
escape character − 16 進のコードおよび記号に使用するデフォルトのエスケープ文字は、円記号 (¥) です。たとえば、¥x0A は改行文字です。
エスケープ文字は、escape character 句を使用して変更できます。たとえば、感嘆符 (!) をエスケープ文字として使用するには、次のように入力します。
... escape character ‘|’
エスケープ文字として使用できるのは、シングルバイトの文字 1 文字のみです。
escapes − escapes を有効 (デフォルト) にすると、データベース・サーバは、円記号に続く文字を特別な文字として認識および解釈します。改行文字は ¥n という組み合わせで、他の文字は 16 進の ASCII コード (例: タブ文字は ¥x09) でデータに含まれます。2 つの円記号 (¥¥) は 1 つの円記号として解釈されます。円記号の後に n、x、X、または ¥ 以外の文字がある場合、この文字と円記号は無関係の 2 つの文字として解釈されます。たとえば、¥q は円記号と文字 q として挿入されます。
by − 入力ファイルのカラムがテーブル・カラムと同じ順序でリストに含まれていること (デフォルトの order)、またはカラム名が一致していること (name) をユーザが指定できます。すべての入力フォーマットで、ファイルにカラム名が情報として含まれているわけではありません。name は、カラム名があるフォーマットにのみ使用できます。テーブルを自動的に作成できるフォーマットを持つのは、dbasell、dbaselll、foxpro、lotus です。
delimited − ASCII 入力フォーマットのデリミタとして使用される文字列を指定します。
column widths − fixed フォーマットの使用時にのみ指定できます。この値は、入力ファイル内のカラム幅を示します。column widths を指定しない場合、カラム幅はデータベース・カラムの種類をもとに決定されます。long varchar または binary のデータを fixed フォーマットで挿入するときは、この句を使用しないでください。
nostrip − 通常、ASCII 入力フォーマットでは、値を挿入する前に、引用符で囲まれていない文字列から後続ブランクが削除されます。nostrip を指定すると、後続ブランクの削除は行われません。このオプションを使用してもしなくても、引用符で囲まれた文字列の後続ブランクは削除されません。nostrip オプションの設定に関係なく、引用符で囲まれていない文字列の先行ブランクは削除されます。
null と解釈されるカラムなどのエントリが ASCII ファイルにある場合、これらは NULL として扱われます。その位置にあるカラムの値を NULL にできないときは、数値カラムには 0 が挿入され、文字カラムには空の文字列が挿入されます。
encoding − ファイルの読み取りに使用するエンコーディングを指定できます。encoding 句を使用できるのは ASCII フォーマットだけです。
encoding を指定しない場合、Interactive SQL はファイルの読み取りに使用するコード・ページを次のリストのように決定します。このリストで先に示すコード・ページの値は、後に示す値よりも優先されます。
default_isql_encoding オプションで指定されたコード・ページ (このオプションが設定された場合)
Interactive SQL を開始するとき -codepage オプションで指定されたコード・ページ
Interactive SQL を実行しているコンピュータのデフォルトのコード・ページ
これは、ASCII テキスト・ファイルを使用する input 文の例です。
input into employee from new_emp.inp format ASCII
input 文を使用して、指定のデータベース・テーブルに大量の挿入を効率よく行うことができます。入力する行は、入力ウィンドウを介してユーザから読み取られるか (prompt の指定時)、ファイルから読み取られます (from file_name の指定時)。どちらも指定しない場合、入力は input 文を含むコマンド・ファイルから読み取られます。Interactive SQL では、この読み取りを [SQL Statements] ウィンドウ枠から直接行うこともできます。その場合、文字列 end のみがある行で入力は終了します。
カラム・リストが入力フォーマットに指定されていると、データは指定のテーブルの指定のカラムに挿入されます。デフォルトで、input 文は、入力ファイル内のカラム値が、データベース・テーブル定義内での値と同じ順序に配置されているとみなします。入力ファイルのカラムが異なる順序で配置されているときは、入力ファイル内の実際のカラム順を input 文の最後にリストする必要があります。
たとえば、次のようにテーブルを作成するとします。
create table inventory ( quantity int, item varchar(60) )
そして、次のように名前、数量値の順になっている入力ファイル stock.txt から ASCII データをインポートするとします。
‘Shirts’, 100 ‘Shorts’, 60
このようにテーブルと異なる順序のデータを正しく挿入するには、以下のように、input 文の最後に、入力ファイル内の実際のカラム順をリストする必要があります。
input into inventory from stock.txt FORMAT ASCII (item, quantity)
デフォルトで、input は、エラーの原因となるローを挿入しようとしたときに停止します。エラーの扱いは、on_error オプションと conversion_error オプションの設定によって異なります (“set option” を参照)。Interactive SQL は、input で文字列値がトランケートされた場合に警告を [メッセージ] ウィンドウ枠に表示します。NOT NULL カラムで失われた値は、数値型では 0 に設定され、数値ではない型では空の文字列に設定されます。input 文が null ローを挿入しようとするのは、入力ファイルに空のローが含まれているときです。
テーブルまたはビューの insert パーミッションが必要です。
なし