MySQL Workbenchを使ってデータベースをCSVファイルにダンプする方法

2024-04-02

MySQLデータベースをコマンドラインからCSVファイルにダンプする方法

必要なもの

  • MySQLサーバー
  • コマンドラインツール

手順

コマンドラインを開き、次のコマンドを実行してMySQLサーバーに接続します。

mysql -u <ユーザー名> -p<パスワード>

<ユーザー名><パスワード> を実際のユーザー名とパスワードに置き換えます。

  1. データベースを選択する

次のコマンドを実行して、ダンプしたいデータベースを選択します。

USE <データベース名>;

<データベース名> を実際のデータベース名に置き換えます。

  1. テーブルをCSVファイルにダンプする

次のコマンドを実行して、テーブルをCSVファイルにダンプします。

SELECT * FROM <テーブル名> INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
  • /path/to/file.csv をCSVファイルの保存場所とファイル名に置き換えます。
  • FIELDS TERMINATED BY ',' は、CSVファイルのフィールド区切り文字をカンマに設定します。

次の例は、mydb データベースの users テーブルを /tmp/users.csv ファイルにダンプする方法を示しています。

mysql -u root -p
USE mydb;
SELECT * FROM users INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

その他のオプション

  • 特定の列のみをダンプするには、SELECT ステートメントで列名を指定します。
  • WHERE 句を使用して、特定の条件に一致するデータのみをダンプできます。
  • ORDER BY 句を使用して、ダンプするデータの順序を指定できます。

注意

  • CSVファイルはプレーンテキストファイルなので、安全な場所に保存してください。
  • CSVファイルは、ExcelやGoogle Sheetsなどのスプレッドシートアプリケーションで開くことができます。



#!/bin/bash

# データベース接続情報
DB_HOST="localhost"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="mydb"

# ダンプするテーブル名
TABLE_NAME="users"

# 出力ファイル名
OUTPUT_FILE="/tmp/users.csv"

# MySQLサーバーに接続
mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASSWORD << EOF

# データベースを選択
USE $DB_NAME;

# テーブルをCSVファイルにダンプ
SELECT * FROM $TABLE_NAME INTO OUTFILE '$OUTPUT_FILE'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

EOF

echo "ダンプが完了しました。"
  1. 環境変数にデータベース接続情報とダンプするテーブル名、出力ファイル名を設定します。
  2. SELECT * FROM ステートメントを使用して、テーブルデータをCSV形式で取得します。
  3. INTO OUTFILE オプションを使用して、CSVデータを指定された出力ファイルに書き込みます。
  4. ダンプが完了したことを表示します。

使用方法

  1. このコードを dump_mysql_to_csv.sh という名前のファイルに保存します。
  2. ファイルのパーミッションを変更して実行可能にします。
chmod +x dump_mysql_to_csv.sh
  1. ファイルを実行します。
./dump_mysql_to_csv.sh

出力ファイル /tmp/users.csv は、次の形式になります。

"id","name","email","created_at","updated_at"
1,"John Doe","[email protected]","2023-01-01 00:00:00","2023-01-01 00:00:00"
2,"Jane Doe","[email protected]","2023-02-01 00:00:00","2023-02-01 00:00:00"
  • このコードはサンプルコードです。必要に応じて変更してください。
  • このコードを実行する前に、データベースがバックアップされていることを確認してください。



MySQLデータベースをCSVファイルにダンプするその他の方法

MySQL Workbenchは、MySQLデータベースを管理するためのGUIツールです。MySQL Workbenchを使用してデータベースをCSVファイルにダンプするには、次の手順を実行します。

  1. MySQL Workbenchを開き、データベースに接続します。
  2. ダンプしたいデータベースを選択して右クリックし、**「データエクスポート」**を選択します。
  3. 「フォーマット」「CSV」 を選択し、「ファイル名」 を指定します。
  4. 「オプション」 で必要に応じて設定を変更します。
  5. 「開始」 をクリックして、ダンプを実行します。
  1. Navicatを開き、データベースに接続します。

PHPMyAdminは、WebブラウザからMySQLデータベースを管理できるツールです。PHPMyAdminを使用してデータベースをCSVファイルにダンプするには、次の手順を実行します。

  1. WebブラウザでPHPMyAdminを開き、データベースにログインします。
  2. 「形式」「CSV」 を選択し、「オプション」 で必要に応じて設定を変更します。

mysqldumpコマンド

コマンドラインからmysqldumpコマンドを使用してデータベースをCSVファイルにダンプすることもできます。mysqldumpコマンドを使用するには、次のコマンドを実行します。

mysqldump -u <ユーザー名> -p<パスワード> <データベース名> <テーブル名> > /path/to/file.csv

その他のツール

他にも、MySQLデータベースをCSVファイルにダンプできるツールはたくさんあります。自分に合ったツールを選択してください。


mysql command-line csv


パーティションテーブルを使用してMySQLテーブルの各パーティションの最後の更新日時を取得する

MySQLテーブルの最終更新日時を取得するには、いくつかの方法があります。方法INFORMATION_SCHEMAを使用するINFORMATION_SCHEMA. TABLESテーブルには、各テーブルの更新日時を含む情報が格納されています。以下のSQLクエリを実行することで、指定されたテーブルの最終更新日時を取得できます。...


MySQLとSQL ServerにおけるTinyintとBitの使い方

値の範囲Tinyint: -128から127までの整数値を格納できます。Bit: 0または1のみを格納できます。使用例Tinyint: 真偽値だけでなく、小さな数値を格納する場合にも使用できます。Bit: 真偽値のみを格納する場合は、Bitの方が適切です。...


MySQLのスキーマ名を変更する:RENAME SCHEMA vs ALTER DATABASE

RENAME SCHEMA ステートメントを使うこれは、MySQL 8.0以降で導入された新しい方法です。この方法を使うと、スキーマ名を簡単に変更することができます。例えば、mydb という名前のスキーマを new_mydb に変更するには、以下のコマンドを実行します。...


【MySQL徹底解説】InnoDBストレージエンジンで外部キー制約を駆使したデータベース設計の極意

しかし、間接的な方法で異なるデータベース間で似たような関係を表現することは可能です。以下、2つの方法をご紹介します。共通テーブルを作成し、両方のデータベースでこのテーブルを共有します。共通テーブルには、関連する両方のテーブルの主キーを格納します。...


SQL SQL SQL Amazon で見る



保存版! MySQL クエリ結果を CSV 形式で出力する 3 つのテクニック

MySQL のクエリ結果を CSV 形式で出力するには、いくつかの方法があります。方法 1: INTO OUTFILE オプションを使うオプションの説明INTO OUTFILE: クエリ結果をファイルに書き出す/path/to/file. csv: 出力ファイルのパス


MySQLで--secure-file-privオプションを使いこなす

MySQLでLOAD DATA INFILEやSELECT . .. INTO OUTFILEなどのコマンドを実行しようとすると、--secure-file-privオプションに関するエラーが発生することがあります。これは、セキュリティ上の理由から、MySQL 5.6以降ではデフォルトでファイル読み込み機能が制限されているためです。