MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテキストファイルをインポートする際、デフォルト以外のエスケープ文字を使う方法(ESCAPED BYオプションの使い方)

MySQLでは、バックスラッシュ(\)がデフォルトのエスケープ文字として設定されています。そのため、テキストファイル内でバックスラッシュを使用している場合は、データをテーブルへインポートする際に、クエリ内で特別な指定を行う必要はありません。

しかし、別の文字をエスケープ文字として使いたい場合は、テキストファイルをインポートするクエリの中で「ESCAPED BY」オプションを使って明示的に指定する必要があります。以下の例で具体的に確認していきましょう。

アスタリスク(*)をエスケープ文字として使用する例

ここでは、テキストファイル内でアスタリスク(*)をエスケープ文字として使用したケースを想定します。ファイルの内容は以下の通りです。

id,Name,Country,Salary
105,Chum*,Marsh,USA,11000
106,Danny*,Harrison,AUS,12000

この例では、「Chum*」や「Danny*」の直後にあるカンマがエスケープされています。つまり、このカンマはフィールドの区切り文字ではなく、値の一部として扱われます。

ESCAPED BYオプションを指定してインポートする

このテキストファイルをMySQLのテーブルにインポートする際は、次のようにクエリ内で「ESCAPED BY」オプションを記述します。

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee6_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.03 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0

ポイント解説

  • FIELDS TERMINATED BY ',':カンマをフィールドの区切り文字として指定しています。
  • ESCAPED BY '*':アスタリスク(*)をエスケープ文字として指定しています。これにより、「*」の直後の文字は区切り文字ではなく、通常のデータとして読み込まれます。
  • IGNORE 1 ROWS:1行目(ヘッダー行)を読み飛ばすための指定です。

インポート結果の確認

実際にどのようにデータが取り込まれたのか、SELECT文で確認してみましょう。

mysql> Select * from employee6_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      | 11000  |
| 106  | Danny,Harrison | AUS      | 12000  |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)

結果を見ると、「Chum*」の直後のカンマがエスケープされていたため、「Name」フィールドには「Chum,Marsh」という1つの値として正しく格納されていることが分かります。同様に「Danny,Harrison」も1つのフィールド値として登録されています。

このように、テキストファイルでバックスラッシュ以外の文字をエスケープ文字として使用している場合は、LOAD DATA文に「ESCAPED BY」オプションを必ず指定することが重要です。指定しない場合、MySQLはデフォルトのバックスラッシュをエスケープ文字として解釈するため、意図しないデータの取り込みやエラーが発生する可能性があります。

  1. 【MySQL】EXISTSとサブクエリで別テーブルの列値と一致する行だけを抽出する方法

    サブクエリとEXISTSを組み合わせるあるテーブルの列値が別のテーブルの列値と一致する場合にのみデータを取得したいときは、サブクエリとEXISTSを組み合わせると簡単に実現できます。まず、1つ目のテーブルを作成しましょう。mysql> create table DemoTable1     -> (     -> Id int,     -> SubjectName varchar(20)     -> )

  2. MySQLストアドプロシージャでSELECT INTOを使ってテーブルからOUTパラメータにデータを読み込む方法

    MySQLのストアドプロシージャでテーブルからデータを読み取り、OUTパラメータに格納するには、SELECT INTO構文を使用します。この記事では、テーブルの作成からストアドプロシージャの呼び出しまで、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1860 ( Amount int ); Query OK, 0 rows affected (0.00 sec) 2. レコードの挿入 INSERTコマンドを使用して、テーブルにい