ワンランク上のデータベース管理: MySQL コマンドラインでテーブルをインポートする高度なテクニック
MySQL コマンドラインを使って単一のテーブルをデータベースにインポートする方法
前提条件
- MySQL サーバーがインストールされていること
- インポートするテーブルのダンプファイルが用意されていること
- MySQL ユーザーアカウントを持っていること
手順
- ターミナルを開き、MySQL コマンドラインツールに移動します。
mysql -u username -p database_name
上記の例では、username
を実際のユーザー名に、database_name
を実際のデータベース名に置き換えます。
- 以下のコマンドを入力して、ダンプファイルからテーブルをインポートします。
mysqlimport -t table_name data.sql
オプション
-replace
オプションを指定すると、既存のテーブルデータを置き換えてインポートします。-ignore-lines
オプションを指定すると、ダンプファイルの先頭から指定された行数を無視します。
例
以下のコマンドは、data.sql
ファイルから my_table
テーブルを my_database
データベースにインポートし、既存のデータを置き換えます。
mysqlimport -t my_table -replace my_database data.sql
補足
- MySQL 8 以降では、
mysqlimport
コマンドの代わりにmysql
コマンドを使ってインポートすることもできます。
mysql -u username -p database_name < data.sql
- テーブルの構造がダンプファイルと異なる場合、インポートが失敗する可能性があります。
# データベースにログイン
mysql -u username -p my_database
# テーブルをインポート
mysqlimport -t my_table -replace data.sql
説明
mysql -u username -p my_database
コマンドで、my_database
データベースにusername
ユーザーとしてログインします。mysqlimport -t my_table -replace data.sql
コマンドで、data.sql
ファイルからmy_table
テーブルをインポートします。-replace
オプションを指定することで、既存のデータが置き換えられます。
- このコードは、MySQL 5.7 以降で使用できます。
data.sql
ファイルは、MySQL で作成したダンプファイルである必要があります。my_table
は、インポートするテーブルの名前です。username
は、MySQL ユーザーの名前です。password
は、MySQL ユーザーのパスワードです。
注意事項
- このコードを実行する前に、必ずバックアップを取ってください。
- このコードは、あくまで一例です。 ご自身の環境に合わせて変更する必要があります。
MySQL コマンドラインで単一のテーブルをインポートするその他の方法
MySQL Shell は、MySQL を操作するための拡張機能です。 MySQL Shell を使用すると、mysqlimport
コマンドよりも直感的で使いやすい方法でテーブルをインポートできます。
- MySQL Shell をインストールします。
- 以下のコマンドを入力して、MySQL Shell に接続します。
mysql shell
util.importTable("database_name", "table_name", "data.sql");
util.importTable("my_database", "my_table", "-replace", "data.sql");
LOAD DATA LOCAL INFILE
ステートメントを使用して、テキストファイルからデータをテーブルに直接ロードできます。 この方法は、ダンプファイルを使用しない場合や、シェルスクリプトからインポートを自動化する場合に便利です。
- テーブルの構造に一致するテキストファイルを作成します。
- 以下のクエリを実行して、テーブルにデータをロードします。
LOAD DATA LOCAL INFILE 'data.txt'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
上記の例では、data.txt
を実際のテキストファイル名に、table_name
を実際のテーブル名に、,
を区切り文字として、\n
を行区切り文字として置き換えます。
IGNORE
キーワードを使用して、エラー行を無視できます。REPLACE
キーワードを使用して、既存のデータを置き換えることができます。
以下のクエリは、data.txt
ファイルからデータを my_table
テーブルにロードし、エラー行を無視して既存のデータを置き換えます。
LOAD DATA LOCAL INFILE 'data.txt'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
REPLACE;
LOAD DATA LOCAL INFILE
ステートメントを使用するには、FILE
権限が必要です。- テキストファイルは、MySQL サーバーと同じホストにある必要があります。
mysql import