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

MySQLテーブルの一部のカラムだけをCSVファイルにエクスポートする方法

MySQLテーブルからファイルへデータをエクスポートする際、SELECT ... INTO OUTFILE ステートメントで取得したいカラム名を指定すれば、一部のフィールド(カラム)だけをCSVファイルに出力できます。ここでは、具体的な例を使って手順をわかりやすく解説します。

例:Student_infoテーブルのデータ

まず、次のようなデータを持つ「Student_info」テーブルがあるとします。

mysql> Select * from Student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
|  101 | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
| 130  | Ram     | Jhansi     | Computers  |
| 132  | Shyam   | Chandigarh | Economics  |
| 133  | Mohan   | Delhi      | Computers  |
+------+---------+------------+------------+
6 rows in set (0.07 sec)

このテーブルには4つのカラムがありますが、ここでは「id」と「Name」の2つのカラムだけをファイルに書き出したいとします。その場合は、SELECT句に必要なカラム名だけを列挙した次のクエリを実行します。

mysql> Select id, Name from Student_info INTO OUTFILE 'C:/mysql/bin/mysql-files/student1.csv';
Query OK, 6 rows affected (0.07 sec)

このクエリを実行すると、指定したパスに「student1.csv」というファイルが新しく作成され、「Student_info」テーブルの「id」カラムと「Name」カラムの値だけがそのファイルに書き出されます。他のカラム(AddressやSubject)は出力されません。

より正確なCSV形式で出力するには

デフォルトの出力はタブ区切りになるため、厳密なCSV形式にしたい場合は FIELDS TERMINATED BY 句を追加するとよいでしょう。

mysql> Select id, Name from Student_info 
    -> INTO OUTFILE 'C:/mysql/bin/mysql-files/student1.csv'
    -> FIELDS TERMINATED BY ',';
Query OK, 6 rows affected (0.07 sec)

注意点

MySQL 5.7以降では、セキュリティ上の理由により、システム変数 secure_file_priv で許可されたディレクトリ以外へはファイルを出力できません。事前に SHOW VARIABLES LIKE 'secure_file_priv'; で許可ディレクトリを確認しておきましょう。また、同名のファイルがすでに存在する場合、上書きされずエラーになるため、出力先のファイル名にも注意が必要です。

  1. MySQLテーブルから既存のカラムを削除する方法を解説

    MySQLでは、ALTER文とDROP句を組み合わせることで、テーブルから特定の既存カラム(列)を削除できます。この操作はデータベースのスキーマ変更において頻繁に使われる基本構文の一つです。基本構文ALTER TABLE テーブル名 DROP カラム名;各要素の意味は以下の通りです。テーブル名:削除対象のカラムが含まれるテーブルの名前を指定します。カラム名:テーブルから削除したいカラムの名前を指定します。実行例ここでは、テーブル「student_detail」から「address」というカラムを削除する例を見ていきましょう。まず、現在のテーブルの中身を確認します。mysql> selec

  2. MySQLでブール型(BOOLEAN)フィールドを追加する方法を徹底解説

    MySQLには厳密な意味での「ブール型」は存在せず、BOOLやBOOLEANとして定義した場合でも、内部的にはすべてTINYINT(1)として扱われます。つまり、tinyint(1)、bool、booleanの3つは完全なシノニム(同義語)です。MySQLにおける真偽値の扱いMySQLでは、0が偽(false)、0以外の数値が真(true)として解釈されます。PHPと同様に、0以外の任意の数値もtrueとして扱われる点に注意しましょう。実務上は、可読性を高めるためにtrue/falseリテラルを使うか、規約として0と1のみを使用するのが一般的です。BOOL型カラムを持つテーブルを作成するそれで