MySQL でデータ INFILE をロードする
このチュートリアルでは、MySQL データベースのデータ INFILE を使用して CSV からデータをインポートする方法を探ることを目的としています。
テキストファイルまたは CSV から非常に高速にデータを読み取るには、MySQL の LOAD DATA INFILE
ステートメントを使用します。さらに、ファイルをホストが考慮する必要がある場合は、LOCAL
ワードが導入されます。
ファイルから情報を読み取る前に、CSV またはテキストファイルがデータベースに存在し、読み取るためのアクセス許可を持っていることを確認する必要があります。
LOAD DATA INFILE
ステートメントの基本的な構文は次のとおりです。
LOAD DATA LOCAL INFILE "./csv_file.csv" INTO TABLE database_name.name_of_table;
ここで、fileCSV.csv
という名前の CSV ファイルから students
データベースに読み込みます。students
データベースのテーブルに student_details
という名前を付けます。
ただし、開始する前に作業するダミーデータセットを作成します。いくつかの行とともに、テーブル student_details
を作成します。
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
CSV ファイルのデータには、stu_id
、stu_firstName
、stu_lastName
などの情報が含まれていますが、stu_id
は異なります。CSV ファイルのスナップショットは次のとおりです。
まず、students
という名前のデータベースを作成することから始めましょう。これは、次のクエリで実行できます。
CREATE DATABASE students;
次のクエリを記述して、CSV ファイルを students
データベースにインポートできます。
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/fileCSV.csv' into table student_details fields terminated by ',' ENCLOSED BY '"' IGNORE 1 ROWS;
これにより、次の出力が得られます。
Query OK, 6 rows affected (0.01 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
students
データベースの student_details
テーブルを確認すると、次の出力が得られます。
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
9 Rich John
10 Veron Brow
11 Geo Jos
12 Hash Shah
13 Sachin Parker
14 David Miller
上記のコードブロックから、student_details
テーブルが更新されたことが推測できます。これで、CSV ファイルのデータがテーブルに追加されました。
したがって、LOAD DATA INFILE
メソッドを使用すると、外部の CSV またはテキストファイルから MySQL のテーブルにデータを効率的に書き込むことができます。