【超解説】LOAD DATA INFILEコマンドを使ってCSVファイルをMySQLテーブルにインポートする方法
MySQLでCSVファイルをインポートする方法
MySQLでは、LOAD DATA INFILE
コマンドを使用して、CSVファイルをデータベースのテーブルに直接インポートすることができます。この方法は、大量のデータを効率的にインポートするのに役立ちます。
手順
-
CSVファイルとテーブルの準備
- CSVファイルは、カンマ区切りで、ヘッダー行を含んでいる必要があります。
- テーブルは、CSVファイルの列数とデータ型に一致する必要があります。
-
LOAD DATA INFILEコマンドの実行
LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column_name1, column_name2, ...);
LOAD DATA LOCAL INFILE
: コマンド名/path/to/file.csv
: インポートするCSVファイルのパスINTO TABLE table_name
: データをインポートするテーブル名FIELDS TERMINATED BY ','
: 列区切り文字 (カンマ)LINES TERMINATED BY '\n'
: 行区切り文字 (改行)(column_name1, column_name2, ...)
: テーブルの列名 (CSVファイルの列順と一致する必要があります)
例
LOAD DATA LOCAL INFILE '/data/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);
この例では、/data/users.csv
というCSVファイルのデータをusers
テーブルにインポートします。CSVファイルには、id
、name
、email
という3つの列があり、テーブルの列名と一致しています。
注意事項
LOAD DATA INFILE
コマンドを実行するには、LOAD DATA LOCAL INFILE
権限が必要です。- CSVファイルとテーブルの列名とデータ型が一致していない場合、エラーが発生します。
- CSVファイルに不正なデータが含まれている場合、インポートが失敗する可能性があります。
- CSVファイルのエンコードがUTF-8ではない場合は、
LOAD DATA INFILE
コマンドにCHARACTER SET
オプションを指定する必要があります。 - CSVファイルにヘッダー行が含まれていない場合は、
IGNORE 1 LINES
オプションを指定してヘッダー行をスキップすることができます。
-- CSVファイルとテーブルの準備
-- users.csv
id,name,email
1,John Doe,johndoe@example.com
2,Jane Doe,janedoe@example.com
-- usersテーブル
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
-- LOAD DATA INFILEコマンドの実行
LOAD DATA LOCAL INFILE '/path/to/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);
実行結果
Query OK, 2 rows affected (0.00 sec)
このコードを実行すると、users.csv
ファイルのデータがusers
テーブルにインポートされます。
ポイント
- CSVファイルとテーブルの列名とデータ型が一致していることを確認してください。
CSVファイルをMySQLテーブルにインポートする他の方法
方法
-
MySQL Workbenchは、MySQLデータベースを管理するためのGUIツールです。MySQL Workbenchを使用して、CSVファイルをインポートするには、以下の手順に従います。
- MySQL Workbenchを起動し、データベースに接続します。
- データベースナビゲーターで、インポートしたいテーブルを選択します。
- 右クリックメニューから、「データインポート」を選択します。
- インポートファイル形式として「CSV」を選択します。
- インポートするCSVファイルを選択します。
- オプションを設定します。
- 「インポート」ボタンをクリックします。
-
mysqlimport
コマンドは、コマンドラインからCSVファイルをインポートするためのツールです。mysqlimport
コマンドを使用して、CSVファイルをインポートするには、以下のコマンドを実行します。mysqlimport -u username -p password database_name table_name file_name.csv
-u
: ユーザー名-p
: パスワードdatabase_name
: データベース名table_name
: テーブル名file_name.csv
: インポートするCSVファイル
-
Pythonスクリプト
Pythonを使用して、CSVファイルをMySQLテーブルにインポートするスクリプトを作成することができます。
import csv import mysql.connector # データベースへの接続 connection = mysql.connector.connect( host="localhost", user="username", password="password", database="database_name", ) # カーソルの作成 cursor = connection.cursor() # CSVファイルの読み込み with open("file_name.csv", "r") as csvfile: reader = csv.reader(csvfile, delimiter=",") # ヘッダー行のスキップ next(reader, None) # データの挿入 for row in reader: cursor.execute("INSERT INTO table_name (column1, column2, ...) VALUES (%s, %s, ...)", row) # コミット connection.commit() # 接続のクローズ cursor.close() connection.close()
- 少量のデータをインポートする場合、MySQL Workbenchを使用するのが簡単です。
- 大量のデータをインポートする場合、
mysqlimport
コマンドまたはPythonスクリプトを使用するのが効率的です。 - より複雑な処理が必要な場合は、Pythonスクリプトを使用することができます。
mysql csv load-data-infile
正規表現を使った大文字小文字を区別しないパターン検索:MySQLとPostgreSQL
MySQLとPostgreSQLは、デフォルトで大文字と小文字を区別します。しかし、特定の状況では、大文字小文字を区別せずにデータを検索したい場合があります。このチュートリアルでは、MySQLとPostgreSQLで 大文字小文字を区別しないクエリを書く方法について説明します。...
コマンドラインでMySQLのユーザーアカウントを管理する方法
mysql コマンドを使用するターミナルまたはコマンドプロンプトを開きます。次のコマンドを実行します。パスワードを入力してログインします。次のコマンドを実行して、すべてのユーザーアカウントのリストを取得します。出力結果には、ユーザー名、ホスト、パスワードハッシュ、権限などの情報が表示されます。...
MySQLで発生する「Illegal mix of collations」エラーの徹底解説
MySQLで「Illegal mix of collations」エラーが発生した場合、複数の原因が考えられます。このエラーは、異なる照合順序を持つカラムを比較しようとした時に発生します。原因異なる照合順序を持つカラムを比較しようとしている...
【完全解説】SQLiteでテーブル構造を確認する方法!DESCRIBEコマンドの代替手段も紹介
カラム名データ型主キーかどうかNULL値を許容するかどうかデフォルト値DESCRIBEコマンドは、テーブルの構造を理解したり、データ型を確認したりする際に役立ちます。SQLiteには、DESCRIBEコマンドと完全に同じ機能を持つコマンドはありません。しかし、以下の方法で同様の情報を得ることができます。...