mysqlimportコマンドでCSVファイルをMySQLテーブルにインポートする方法を解説
CSVファイルをMySQLのテーブルにインポートするには、まずインポート元となるCSVファイル(カンマ区切りの値を持つファイル)を用意する必要があります。さらに、インポート先となるMySQLテーブルは、CSVファイルと同じ名前・同じ構造で作成しておかなければなりません。
本記事では、具体的な例を使いながら、mysqlimportコマンドによるCSVデータの取り込み手順をわかりやすく解説します。
前提条件:CSVファイルとテーブルの準備
ここでは、以下のようなデータを持つ「Address.CSV」ファイルを例にします。1行目はヘッダー(列名)になっています。
Name,LastName,Address Mohan, Sharma, Sundernagar Saurabh, Arora, Chandigarh Rajesh, Singh, Lucknow
次に、このCSVファイルのデータを受け入れるためのMySQLテーブル「Address」を作成します。テーブル名はファイル名と一致させ、各列の構造もCSVの内容に対応させておく必要があります。
mysql> DESCRIBE ADDRESS; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | Name | varchar(20) | YES | | NULL | | | LastName | varchar(20) | YES | | NULL | | | Address | varchar(20) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
mysqlimportコマンドでCSVをインポートする
準備が整ったら、mysqlimportコマンドにいくつかのオプションを指定して実行します。これにより、address.csvの内容がMySQLテーブル「address」へ読み込まれます。
C:\mysql\bin>mysqlimport --ignore-lines=1 --fields-terminated-by=, --verbose --local -u root query C:/mysql/bin/mysql-files/address.csv Connecting to localhost Selecting database query Loading data from LOCAL file: C:/mysql/bin/mysql-files/address.csv into address query.address: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 Disconnecting from localhost
使用したオプションの意味
- --ignore-lines=1:CSVファイルの先頭1行(ヘッダー行)を読み飛ばします。
- --fields-terminated-by=,:フィールドの区切り文字をカンマ(,)として扱います。
- --verbose:処理の詳細な進行状況を表示します。
- --local:クライアント側のローカルファイルからデータを読み込みます。
- -u root:接続に使用するMySQLユーザーを指定します。
インポート結果の確認
コマンド実行後、SELECT文でテーブルの中身を確認してみましょう。
mysql> Select * from Address; +---------+----------+-------------+ | Name | LastName | Address | +---------+----------+-------------+ | Mohan | Sharma | Sundernagar | | Saurabh | Arora | Chandigarh | | Rajesh | Singh | Lucknow | +---------+----------+-------------+ 3 rows in set (0.00 sec)
この結果セットから、CSVファイルの値が正しくMySQLテーブルにインポートされたことが確認できます。実行ログの「Records: 3 Deleted: 0 Skipped: 0 Warnings: 0」という表示も、3件すべてのレコードがエラーなく登録されたことを示しています。
-
【初心者向け】2つのMySQLテーブルをマージ(統合)する方法をわかりやすく解説
2つのMySQLテーブルをマージする方法 2つのMySQLテーブルをマージ(統合)するには、INSERT IGNOREステートメントとSELECT文を組み合わせて使用します。基本構文は以下の通りです。 INSERT IGNORE INTO yourTableName1 select *from yourTableName2; この構文では、マージ元テーブル(yourTableName2)のすべてのレコードが、マージ先テーブル(yourTableName1)に挿入されます。IGNOREキーワードを付けることで、主キーの重複などによるエラーが発生しても処理が中断されず、重複行は自動的にスキップされ
-
MySQLで1つのクエリを使って2つのテーブルに同時にデータを挿入する方法
はじめにMySQLではストアドプロシージャを活用することで、実質的に1回のクエリ呼び出しで複数のテーブルへデータを挿入することが可能です。この記事では、実際に2つのテーブルを作成し、それらへ一度にレコードを挿入する手順を順を追って解説します。1. 最初のテーブルを作成するまず、学生情報を格納するテーブルを作成します。AUTO_INCREMENTにより、StudentIdが自動的に採番されます。mysql> create table DemoTable( StudentId int NOT NULL AUTO_INCREMENT PRIMARY