テキストファイルからMySQLテーブルへ特定の列のみをインポートする方法
テキストファイルに一部の列の値だけが含まれており、データのインポート先となるMySQLテーブルにはそれ以外の余分な列が存在するケースはよくあります。このような場合でも、クエリ内で列名を明示的に指定すれば、特定の列の値だけをアップロードすることが可能です。以下の例で具体的な手順を見ていきましょう。
例:テキストファイルの準備
たとえば、テキストファイルには「id」「Name」「Salary」の3つの列の値のみがカンマ区切りで保存されているとします。
105,Chum,11000 106,Danny,12000
列名を指定してインポートする
このテキストファイルをMySQLテーブルに取り込む際は、LOAD DATA LOCAL INFILE文の中で、テキストファイルに値が存在する列の名前を次のように括弧内に列挙します。
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee9_tbl FIELDS TERMINATED BY ','(id, Name, Salary); Query OK, 2 rows affected (0.04 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 mysql> Select * from employee9_tbl; +------+----------------+----------+--------+ | Id | Name | Country | Salary | +------+----------------+----------+--------+ | 105 | Chum | NULL | 11000 | | 106 | Danny | NULL | 12000 | +------+----------------+----------+--------+ 2 rows in set (0.00 sec)
上記の結果セットからわかるように、MySQLは「Id」「Name」「Salary」の3つの列に対してのみ値を登録しました。クエリで指定しなかった「Country」列のフィールドには、自動的にNULLが格納されています。
押さえておきたいポイント
- LOCALキーワード:
LOAD DATA LOCAL INFILEを使用すると、サーバー側ではなくクライアント側(ローカル)のファイルを読み込めます。サーバー上のファイルを扱う場合はLOCALを省略します。 - 区切り文字の指定:
FIELDS TERMINATED BY ','により、各フィールド(列)がカンマで区切られていることを宣言しています。タブ区切りなら'\t'を指定します。 - 未指定の列の扱い: 括弧内に列挙しなかった列には、NULLまたはテーブル定義されたデフォルト値が自動的に設定されます。
このように、ファイルとテーブルの構成が完全に一致していなくても、列名を正しく指定するだけで柔軟にデータをインポートできるのがLOAD DATA文の強みです。
-
MySQLテーブルのカラム名を取得する方法【SHOW・DESCRIBE活用ガイド】
SHOWコマンドでカラム名を取得するMySQLでは、SHOWコマンドを使うことで、テーブルのカラム(列)名を簡単に確認できます。カラム名だけでなく、データ型やNULL許可、キー情報なども一緒に取得できるのが特徴です。基本構文show columns from テーブル名;サンプルテーブルの作成まず、動作確認用に「DemoTable」というテーブルを作成します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(
-
MySQLでテキストフィールドから数字のみを抽出する方法を解説
MySQLでは、テキスト型(TEXT)のカラムに保存されたデータに、数字以外の記号や文字が混在していることがあります。例えば、ハイフン(-)、カンマ(,)、スペース、引用符などが含まれる場合、それらを取り除いて数字だけを抽出したいケースは少なくありません。本記事では、REPLACE関数を組み合わせることで、テキストフィールドから数字のみを抽出する方法を、実際のSQL文と実行結果とともにわかりやすく解説します。1. サンプルテーブルを作成するまず、テキスト型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( Number text )