バッチ処理は、mysql プログラムを実行する非対話型の方法であり、mysql で使用するのと同じコマンドを使用します。 バッチ処理は、mysql プログラムを実行する非対話型の方法であり、mysql で使用するのと同じコマンドを使用します。
バッチ処理を実装するには、まずファイルを mysql プログラムにリダイレクトします。このテキスト ファイルには、mysql で入力したコマンドと同じテキストが含まれています。
たとえば、データを挿入する場合は、次のテキストを含むファイルを使用します (ファイル名は New_Data.sql ですが、もちろん、New_Data.txt またはその他の正式な名前を付けることもできます。末尾は必要ありません)接尾辞 sql を付けて):
Meet_A_Geek を使用します。
INSERT INTO 顧客 (Customer_ID, Last_Name) VALUES(NULL, "ブロック");
INSERT INTO 顧客 (Customer_ID, Last_Name) VALUES(NULL, "Newton");
INSERT INTO 顧客 (Customer_ID, Last_Name) VALUES(NULL, "シモンズ");
上記の文は文法的に正しく、各文はセミコロンで終わる必要があることに注意してください。 上記の USE コマンドはデータベースを選択し、INSERT コマンドはデータを挿入します。
次に、上記のファイルをデータベースにインポートする必要があります。インポートする前に、データベースがすでに実行されていること、つまり、mysqld プロセス (またはサービス、Windows NT では「サービス」、Unix では「プロセス」と呼ばれます) が実行されていることを確認する必要があります。すでに実行中です。
次に、次のコマンドを実行します。
bin/mysql –p < /home/mark/New_Data.sql
次に、プロンプトに従ってパスワードを入力します。上記のファイルのステートメントにエラーがない場合、データはデータベースにインポートされます。
ファイルからデータベースにデータをインポートするには、コマンド ラインで LOAD DATA INFILE を使用します。
ここで、「いったいなぜ、これらすべての SQL ステートメントをファイルに入力し、プログラムで実行する必要があるのでしょう?」と自問しているかもしれません。
これは大変な作業のように思えるかもしれません。まあ、そう考えたあなたはおそらく正しいでしょう。しかし、これらすべてのコマンドのログ レコードがある場合はどうなるでしょうか?これは素晴らしいことです。ほとんどのデータベースは、データベースに記録されたイベントのログを自動的に生成します。ほとんどのログには、使用された元の SQL コマンドが含まれています。したがって、現在のデータベースから新しい mysql データベースにデータをエクスポートできない場合は、ログと mysql のバッチ処理機能を使用して、データを迅速かつ簡単にインポートできます。もちろん、これにより入力の手間が省けます。
データインファイルのロード
これは、MySQL データベースにデータをインポートするために紹介する最後の方法です。このコマンドは mysqlimport に非常に似ていますが、このメソッドは mysql コマンド ラインで使用できます。これは、API を使用するすべてのプログラムでこのコマンドを使用できることを意味します。この方法を使用すると、インポートするデータをアプリケーションにインポートできます。
このコマンドを使用する前に、mysqld プロセス (サービス) が実行されている必要があります。
mysql コマンドラインを開始します。
bin/mysql –p
プロンプトに従ってパスワードを入力し、mysql コマンドラインに正常に入力したら、次のコマンドを入力します。
Meet_A_Geek を使用します。
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;
簡単に言えば、これはファイル data.sql の内容をテーブル Orders にインポートします。mysqlimport ツールと同様に、このコマンドにもいくつかのオプションのパラメーターがあります。たとえば、自分のコンピュータからリモート データベース サーバーにデータをインポートする必要がある場合は、次のコマンドを使用できます。
データ ローカル INFILE "C:MyDocsSQL.txt" をテーブルにロードします。
上記の LOCAL パラメータは、ファイルがローカル ファイルであり、サーバーがログインしているサーバーであることを示します。これにより、サーバーにファイルをアップロードするために FTP を使用する必要がなくなり、MySQL がそれを実行します。
挿入ステートメントの優先順位を低優先順位 (LOW_PRIORITY) として設定する場合、MySQL はデータを挿入する前に、他のユーザーがテーブルを読み取らなくなるまで待機します。次のコマンドを使用できます。
データ LOW_PRIORITY INFILE "/home/mark/data.sql" をテーブルにロードします。
データを挿入するときにファイルやテーブルの重複キー値を置換するか無視するかを指定することもできます。重複したキー値を置換するための構文:
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Orders;
上記の文は少しぎこちないように見えるかもしれませんが、プロファイラーが理解できる場所にキーワードが配置されています。
次のオプションのペアは、ファイル記録形式について説明します。これらのオプションは、mysqlimport ツールでも使用できます。ここでは少し違って見えます。まず、FIELDS キーワードを使用する必要があります。このキーワードが使用される場合、MySQL プロファイラーは次のオプションの少なくとも 1 つを参照することを期待します。
文字で終了
文字で囲まれています
文字によってエスケープされました
これらのキーワードとそのパラメータは、mysqlimport と同じように使用されます。
TERMINATED BY はフィールドの区切り文字を表します。デフォルトではタブ文字 (t) です。
ENCLOSED BY は、フィールドの括弧文字を記述します。たとえば、各フィールドを引用符で囲みます。
ESCAPED BY で記述されるエスケープ文字。デフォルトはバックスラッシュ: ) です。
以下では、引き続き前の mysqlimport コマンドの例を使用し、LOAD DATA INFILE ステートメントを使用して同じファイルをデータベースにインポートします。
LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ',' ENCLOSED BY '"';
LOAD DATA INFILE ステートメントには、mysqlimport ツールでは使用できない機能があります。
LOAD DATA INFILE は、指定した列ごとにファイルをデータベースにインポートできます。
この機能は、データの一部をインポートする場合に非常に重要です。たとえば、Access データベースから MySQL データベースにアップグレードする場合、追加のニーズを満たすために、MySQL データベースにいくつかの列 (列/フィールド/フィールド) を追加する必要があります。
現時点では、Access データベースのデータはまだ利用できますが、これらのデータのフィールドが MySQL のフィールドと一致しなくなったため、mysqlimport ツールは使用できなくなります。それでも、LOAD DATA INFILE を使用することはできます。次の例は、指定したフィールドにデータをインポートする方法を示しています。
LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);
ご覧のとおり、必須フィールドを指定できます。これらの指定されたフィールドは依然として括弧で囲まれ、カンマで区切られています。フィールドを見逃した場合は、MySQL によって通知されます。