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

行プレフィックスを含むテキストファイルをMySQLテーブルにインポートする方法

テキストファイルの各行に行プレフィックス(行頭の接頭辞)が含まれている場合、LINES STARTING BY オプションを使用することで、そのプレフィックスを考慮しながら正しいデータだけをMySQLテーブルにインポートできます。以下の例で具体的な使い方を見ていきましょう。

まず、テキストファイル内で「VALUE:」という文字列を行プレフィックスとして使用しているケースを想定します。

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

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

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 1 row affected (0.07 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

実際にどのようなデータがインポートされたのか、次のSELECTクエリで確認してみましょう。

mysql> Select * from employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      |  11000 |
+------+----------------+----------+--------+
1 row in set (0.00 sec)

結果を見ると、テーブルには1件のレコードしか登録されていません。これは、最初のデータ行にのみ行プレフィックス「VALUE:」が付いており、プレフィックスを持たない行は自動的にスキップされたためです。

では、テキストファイルにもう1つ行プレフィックス「VALUE:」付きの行を追加するとどうなるでしょうか。MySQLはその行も問題なく読み込みます。

id, Name, Country, Salary
Value:105, Chum*, Marsh,USA, 11000
106, Danny*,Harrison, AUS, 12000
Value:107, Raman*,Kumar, IND, 25000
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.07 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0

再度テーブルの内容を確認します。

mysql> Select * from employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      |  11000 |
| 107  | Raman,Kumar    | IND      |  25000 |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)

このように、LINES STARTING BY オプションを指定すると、指定したプレフィックスで始まる行のみがインポート対象となり、それ以外の行はすべて無視されます。ヘッダー行や不要な行が混在するテキストファイルから、必要なデータだけを効率的に取り込みたい場合に非常に便利な機能です。また、IGNORE 1 ROWS を組み合わせれば、ファイル先頭の見出し行も同時に除外できるため、実務でのデータ取り込み作業がより柔軟になります。

  1. MySQLテーブルのストレージエンジンを変更する方法【ALTER TABLE活用】

    MySQLテーブルのストレージエンジンを変更するには? MySQLでは、ALTER TABLE文を使用することで、既存テーブルのストレージエンジンを後から簡単に変更できます。トランザクション対応やパフォーマンス要件の変化など、用途に応じてストレージエンジンを見直したい場合に便利な機能です。 ALTER TABLE文でストレージエンジンを変更する手順 ストレージエンジンを変更するには、ENGINEオプションを指定してALTER TABLE文を実行します。以下の例では、「Student」テーブルのストレージエンジンを「InnoDB」に変更しています。 mysql> ALTER TABLE

  2. MySQLテーブルに保存されたエポック(UNIXタイムスタンプ)を読み取り可能な日付に変換する方法

    MySQLでは、テーブルにエポック(UNIXタイムスタンプ)として保存された数値を、人間が読み取りやすい日時形式に変換したい場面がよくあります。そんなときに便利なのが FROM_UNIXTIME() 関数です。FROM_UNIXTIME()関数とはFROM_UNIXTIME() は、エポック秒(1970年1月1日 00:00:00 UTCからの経過秒数)を「YYYY-MM-DD HH:MM:SS」形式の日時文字列に変換するMySQLの組み込み関数です。セッションのタイムゾーン設定に基づいて現地時間に変換される点にも注意してください。使用例:visitorsテーブルでの変換ここでは、「visit