テーブルを作成したら、データを取り込む必要があります。これには、LOAD
DATA
ステートメントと
INSERT
ステートメントが役立ちます。
ペットのレコードを次のように記述できると仮定します。(MySQL
では、日付の形式は
'YYYY-MM-DD'
と想定されています。これはユーザーが通常使用する形式とは異なる場合があります。)
name | owner | species | sex | birth | death |
Fluffy | Harold | cat | f | 1993-02-04 | |
Claws | Gwen | cat | m | 1994-03-17 | |
Buffy | Harold | dog | f | 1989-05-13 | |
Fang | Benny | dog | m | 1990-08-27 | |
Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
Chirpy | Gwen | bird | f | 1998-09-11 | |
Whistler | Gwen | bird | 1997-12-09 | ||
Slim | Benny | snake | m | 1996-04-29 |
空のテーブルから始めるため、データを取り込む簡単な方法は、各ペットに対応する行を記述したテキストファイルを作成してから、1 つのステートメントでそのファイルの内容をテーブルにロードすることです。
たとえば、テキストファイル
pet.txt
を作成し、1
行に 1
レコードを記述します。値は、CREATE
TABLE
ステートメントに指定したカラムの順序に従い、タブで区切って指定します。性別が不明な場合やまだ生きているペットの死亡日など、不足している値には
NULL
値を使用できます。テキストファイルでこれらを表現するには、\N
(バックスラッシュと大文字の N)
を使用します。たとえば、Whistler
という鳥のレコードは次のようになります
(値の間の空白は 1 つのタブ文字です)。
Whistler Gwen bird \N 1997-12-09 \N
テキストファイル
pet.txt
を
pet
テーブルにロードするには、次のステートメントを使用します。
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
このファイルを Windows
で作成した場合、作成に使用したエディタで
\r\n
がラインターミネータとして使用されているときは、代わりに次のステートメントを使用します。
mysql>LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
->LINES TERMINATED BY '\r\n';
(OS X を実行している Apple
マシンでは、LINES TERMINATED BY
'\r'
を使用するとよいでしょう。)
カラム値のセパレータと行末マーカーは、必要に応じて
LOAD DATA
ステートメントで明示的に指定できますが、デフォルトではタブと改行です。デフォルト値でもステートメントで
pet.txt
ファイルを正しく読み込むことができます。
ステートメントが失敗する場合、使用している
MySQL
インストールではローカルファイル機能がデフォルトで有効になっていない可能性があります。これを変更する方法については、Security Issues with LOAD DATA LOCAL
を参照してください。
新しいレコードを 1
つずつ追加する場合は、INSERT
ステートメントが役立ちます。もっとも単純な形式では、CREATE
TABLE
ステートメントに指定したカラムの順序に従って、各カラムの値を入力します。Diane
が 「Puffball」
という名前の新しいハムスターを飼い始めたと仮定します。INSERT
ステートメントを次のように使用して、新しいレコードを追加することができます。
mysql>INSERT INTO pet
->VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
ここでは、文字値と日付値を、引用符付きの文字列で指定しています。また、INSERT
では、不足している値を表す
NULL
を直接挿入することができます。LOAD
DATA
の場合のように
\N
を使用することはありません。
この例からわかるとおり、初期レコードをロードするために複数の
INSERT
ステートメントを使用すると、1 つの
LOAD DATA
ステートメントを使用する場合よりもかなり多くの入力が必要になります。