行プレフィックスを含むテキストファイルを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 を組み合わせれば、ファイル先頭の見出し行も同時に除外できるため、実務でのデータ取り込み作業がより柔軟になります。
-
MySQLテーブルのストレージエンジンを変更する方法【ALTER TABLE活用】
MySQLテーブルのストレージエンジンを変更するには? MySQLでは、ALTER TABLE文を使用することで、既存テーブルのストレージエンジンを後から簡単に変更できます。トランザクション対応やパフォーマンス要件の変化など、用途に応じてストレージエンジンを見直したい場合に便利な機能です。 ALTER TABLE文でストレージエンジンを変更する手順 ストレージエンジンを変更するには、ENGINEオプションを指定してALTER TABLE文を実行します。以下の例では、「Student」テーブルのストレージエンジンを「InnoDB」に変更しています。 mysql> ALTER TABLE
-
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