2024-04-02

【超解説】LOAD DATA INFILEコマンドを使ってCSVファイルをMySQLテーブルにインポートする方法

mysql csv load data infile

MySQLでCSVファイルをインポートする方法

MySQLでは、LOAD DATA INFILEコマンドを使用して、CSVファイルをデータベースのテーブルに直接インポートすることができます。この方法は、大量のデータを効率的にインポートするのに役立ちます。

手順

  1. CSVファイルとテーブルの準備

    • CSVファイルは、カンマ区切りで、ヘッダー行を含んでいる必要があります。
    • テーブルは、CSVファイルの列数とデータ型に一致する必要があります。
  2. 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ファイルには、idnameemailという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ファイルをインポートするには、以下の手順に従います。

    1. MySQL Workbenchを起動し、データベースに接続します。
    2. データベースナビゲーターで、インポートしたいテーブルを選択します。
    3. 右クリックメニューから、「データインポート」を選択します。
    4. インポートファイル形式として「CSV」を選択します。
    5. インポートするCSVファイルを選択します。
    6. オプションを設定します。
    7. 「インポート」ボタンをクリックします。
  • 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コマンドと完全に同じ機能を持つコマンドはありません。しかし、以下の方法で同様の情報を得ることができます。...