- 1 1. ã¯ããã«
- 2 2. MySQLããŒã¿ã€ã³ããŒãã®åºæ¬æé
- 3 3. GUIã䜿ã£ãã€ã³ããŒãæ¹æ³
- 4 4. ã³ãã³ãã©ã€ã³ããã®ã€ã³ããŒãæ¹æ³
- 5 5. CSVãã¡ã€ã«ã€ã³ããŒãæã®æ³šæç¹
- 6 6. ãšã¯ã¹ããŒããšã€ã³ããŒãã®å®è·µäŸ
- 7 7. ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- 8 8. FAQïŒãããã質åïŒ
- 8.1 Q1: CSVãã¡ã€ã«ã§ç¹å®ã®åã ããã€ã³ããŒãããããšã¯ã§ããŸããïŒ
- 8.2 Q2: 倧容éããŒã¿ãå¹ççã«ã€ã³ããŒãããæ¹æ³ã¯ïŒ
- 8.3 Q3: ã€ã³ããŒãæã«ããŒã¿ãæ€èšŒããæ¹æ³ã¯ãããŸããïŒ
- 8.4 Q4: ããŒã¿ã€ã³ããŒãäžã«MySQLãã¿ã€ã ã¢ãŠãããŸãããã©ãããã°ããã§ããïŒ
- 8.5 Q5: ã€ã³ããŒãæã«ç©ºçœã»ã«ãNULLãšããŠæ±ãã«ã¯ã©ãããã°ããã§ããïŒ
- 9 9. ãŸãšã
1. ã¯ããã«
MySQLã®ããŒã¿ã€ã³ããŒãã¯ãããŒã¿ããŒã¹ãæ±ãäžã§éåžžã«éèŠãªäœæ¥ã§ããæ¢åã®ããŒã¿ãå¹ççã«ã€ã³ããŒãããããšã§ãæ°ããã·ã¹ãã ãžã®ç§»è¡ãããã¯ã¢ããããã®åŸ©å ãè¿ éã«è¡ãããšãã§ããŸããæ¬èšäºã§ã¯ãåå¿è ããäžçŽè ã察象ã«ãMySQLããŒã¿ã€ã³ããŒãã®åºæ¬ããå¿çšãŸã§ããããããã解説ããŸããå ·äœçãªã³ãã³ãäŸãããŒã«ã®äœ¿ç𿹿³ããããããã©ãã«ã®è§£æ±ºçã玹ä»ããŸãã®ã§ããã²æåŸãŸã§ã芧ãã ããã
2. MySQLããŒã¿ã€ã³ããŒãã®åºæ¬æé
MySQLã§ããŒã¿ãã€ã³ããŒãããéã¯ãããŒã¿ããŒã¹ãšããŒãã«ã®æºåãã€ã³ããŒãããããŒã¿ã®åœ¢åŒç¢ºèªããããŠå®éã®ã³ãã³ãå®è¡ãšããæµãã§é²ããŸãã以äžã§ã¯ããããã®æé ãå ·äœçã«è§£èª¬ããŸãã
ããŒã¿ããŒã¹ãšããŒãã«ã®æºå
ãŸããã€ã³ããŒãå ãšãªãããŒã¿ããŒã¹ãšããŒãã«ãå¿ èŠã§ããããŒã¿ããŒã¹ãååšããªãå Žåã¯ã以äžã®SQLã³ãã³ãã§äœæããŸãã
CREATE DATABASE example_db;
USE example_db;
CREATE TABLE example_table (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
ã€ã³ããŒãããããŒã¿ã®åœ¢åŒç¢ºèª
CSV圢åŒã®ããŒã¿ãã€ã³ããŒãããå ŽåãããŒã¿ãã¡ã€ã«ãæ£ãããã©ãŒãããã§ããããšã確èªããŠãã ãããäŸãã°ã以äžã®ãããªåœ¢åŒãäžè¬çã§ãã
1,John Doe,30
2,Jane Smith,25
- ããªãã¿: ã«ã³ãïŒ
,
ïŒã§åºåãããŠããããšã - ãšã³ã³ãŒãã£ã³ã°: UTF-8ã§ä¿åãããŠããããšãæšå¥šãããŸãã
LOAD DATA INFILE
ã³ãã³ãã®äœ¿çš
MySQLã®LOAD DATA INFILE
ã³ãã³ãã䜿ãããšã§ãCSVããŒã¿ãå¹ççã«ã€ã³ããŒãã§ããŸãã以äžã¯ãã®åºæ¬æ§æã§ãã
LOAD DATA INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '
';
- FIELDS TERMINATED BY: ããŒã¿ã®åºåãæåãæå®ããŸãã
- ENCLOSED BY: å€ãå²ãæåãæå®ããŸãïŒäŸ: ããã«ã¯ã©ãŒãïŒã
- LINES TERMINATED BY: åè¡ã®çµäºæåãæå®ããŸãã
ããã§ããŒã¿ãããŒãã«ã«ã€ã³ããŒããããŸãã
3. GUIã䜿ã£ãã€ã³ããŒãæ¹æ³
GUIããŒã«ã䜿ããšãã³ãã³ãã©ã€ã³ã«äžæ £ããªæ¹ã§ãç°¡åã«ã€ã³ããŒãäœæ¥ãè¡ããŸããããã§ã¯ãMySQL WorkbenchãšphpMyAdminã®äœ¿ç𿹿³ã玹ä»ããŸãã
MySQL Workbenchã®äœ¿ç𿹿³
- ããŒã¿ã€ã³ããŒããŠã£ã¶ãŒããèµ·å
MySQL Workbenchãéããã¡ãã¥ãŒããŒãããServerãâãData ImportããéžæããŸãã - ãã¡ã€ã«ãéžæ
ãImport from Self-Contained Fileãã§ã€ã³ããŒããããã¡ã€ã«ãæå®ããŸãã - ã¿ãŒã²ããããŒã¿ããŒã¹ã®éžæ
ãDefault Target Schemaãã§ã€ã³ããŒãå ã®ããŒã¿ããŒã¹ãéžæããŸãã - å®è¡
ãStart Importããã¯ãªãã¯ããŠã€ã³ããŒããéå§ããŸãã
phpMyAdminã®äœ¿ç𿹿³
- phpMyAdminã«ãã°ã€ã³
ãã©ãŠã¶ã§phpMyAdminã«ã¢ã¯ã»ã¹ãããã°ã€ã³ããŸãã - ããŒã¿ããŒã¹ãéžæ
å·ŠåŽã®ã¡ãã¥ãŒããã€ã³ããŒãå ã®ããŒã¿ããŒã¹ãéžã³ãŸãã - ã€ã³ããŒãã¿ããéã
äžéšã®ãã€ã³ããŒããã¿ããã¯ãªãã¯ããŸãã - ãã¡ã€ã«ãéžæ
ããã¡ã€ã«ãéžæããã¿ã³ã§CSVãã¡ã€ã«ãæå®ããŸãã - ãã©ãŒããããæå®
ãã¡ã€ã«åœ¢åŒïŒäŸ: CSVïŒããšã³ã³ãŒãã£ã³ã°ãéžæããŸãã - å®è¡
ãå®è¡ããã¿ã³ãæŒããŠã€ã³ããŒããå®äºãããŸãã
4. ã³ãã³ãã©ã€ã³ããã®ã€ã³ããŒãæ¹æ³
GUIããŒã«ã«é Œããã³ãã³ãã©ã€ã³ã§äœæ¥ãè¡ããšããã现ããªèšå®ãå¯èœã§ããããã§ã¯ãmysql
ã³ãã³ããšsource
ã³ãã³ãã䜿ã£ãã€ã³ããŒãæ¹æ³ã説æããŸãã
mysql
ã³ãã³ãã䜿ã£ãã€ã³ããŒã
以äžã®ã³ãã³ãã§ãSQLãã¡ã€ã«ãããŒã¿ããŒã¹ã«ã€ã³ããŒãã§ããŸãã
mysql -u root -p example_db < /path/to/example.sql
- -u: ãŠãŒã¶ãŒåãæå®ããŸãã
- -p: ãã¹ã¯ãŒãã®å ¥åãæ±ãããªãã·ã§ã³ã§ãã
- example_db: ã€ã³ããŒãå ã®ããŒã¿ããŒã¹åã§ãã
source
ã³ãã³ãã®äœ¿çš
MySQLã·ã§ã«å ã§çŽæ¥ã€ã³ããŒããè¡ãããå Žåã以äžã®æé ãå®è¡ããŸãã
mysql -u root -p
USE example_db;
SOURCE /path/to/example.sql;
ãã®æ¹æ³ã¯ã·ã§ã«ãæããããšãªãæäœãå®çµã§ãããã䟿å©ã§ãã
OSããšã®æ³šæç¹
- Windows: ãã¡ã€ã«ãã¹ã¯ããã¯ã¹ã©ãã·ã¥ïŒ
\
ïŒã䜿çšããŠãã ããã - Linux/Mac: ãã¡ã€ã«ãã¹ã«ã¯ã¹ã©ãã·ã¥ïŒ
/
ïŒã䜿çšããŸãã
5. CSVãã¡ã€ã«ã€ã³ããŒãæã®æ³šæç¹
MySQLã§CSVãã¡ã€ã«ãã€ã³ããŒãããéã«ã¯ãäºåã«ããã€ãã®æ³šæç¹ãæŒãããŠããããšã§ãã¹ã ãŒãºã«äœæ¥ãé²ããããšãã§ããŸããããã§ã¯ãã€ã³ããŒãæã®ãããã課é¡ããããããé²ãããã®å¯Ÿçã«ã€ããŠè§£èª¬ããŸãã
ãšã³ã³ãŒãã£ã³ã°åé¡
CSVãã¡ã€ã«ã®æåã³ãŒããããŒã¿ããŒã¹èšå®ãšç°ãªãå Žåãæååãããšã©ãŒãçºçããŸããç¹ã«ãæ¥æ¬èªãå«ãããŒã¿ã§ã¯ãæåã³ãŒãã®éãã«æ³šæãå¿ èŠã§ãã
- æšå¥šããããšã³ã³ãŒãã£ã³ã°: MySQLã§ã¯äžè¬çã«UTF-8ãæšå¥šãããŸãã
- Shift-JISã®äœ¿çš: Windowsç°å¢ã§äœæãããCSVãã¡ã€ã«ã¯Shift-JISã®å Žåãå€ããããUTF-8ã«å€æããŠãããšãã©ãã«ãé²ããŸãã
ãšã³ã³ãŒãã£ã³ã°ç¢ºèªæ¹æ³:
- Windows: ã¡ã¢åž³ã§ãååãä»ããŠä¿åãããæåã³ãŒãã確èªã
- Linux/Mac:
file
ã³ãã³ãã§ãã¡ã€ã«ã®ãšã³ã³ãŒãã£ã³ã°ã確èªã§ããŸãã
file -i example.csv
local_infile
ã®èšå®
LOAD DATA INFILE
ã³ãã³ãã䜿çšããå Žåãlocal_infile
ãªãã·ã§ã³ãæå¹åãããŠããå¿
èŠããããŸããããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããå Žåããããããèšå®ã確èªããŠãã ããã
èšå®ç¢ºèªãšæå¹åæé :
- çŸåšã®ç¶æ ã確èª
SHOW VARIABLES LIKE 'local_infile';
åºåãOFF
ã®å Žåã以äžã®æé ã§æå¹åããŸãã
- ã¯ã©ã€ã¢ã³ãæ¥ç¶æã«æå¹å
mysql --local-infile=1 -u root -p
- ãµãŒããŒã¬ãã«ã§æå¹å
- MySQLã®èšå®ãã¡ã€ã«ïŒ
my.cnf
ãŸãã¯my.ini
ïŒãç·šéãã以äžã®è¡ã远å ããŸãã
[mysqld]
local_infile=1 èšå®å€æŽåŸã«MySQLãµãŒããŒãåèµ·åããŠãã ããã
CSVããŒã¿ã®æŽåæ§
ããŒã¿ãæ£ããã€ã³ããŒãããããã«ã以äžã®ç¹ã確èªããŠãã ããã
- åæ°ã®äžèŽ
CSVãã¡ã€ã«ã®åæ°ãšããŒãã«ã®ã«ã©ã æ°ãäžèŽããŠããªããšãšã©ãŒã«ãªããŸããå¿ èŠã«å¿ããŠCSVãã¡ã€ã«ãç·šéããŠãã ããã - NULLå€ã®æ±ã
空çœã»ã«ã¯MySQLã§ã¯NULLãšããŠæ±ãããŸããNULLãç¹å®ã®å€ã«å€æããå ŽåãLOAD DATA INFILE
ã§ä»¥äžã®ããã«æå®ããŸãã
LOAD DATA INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
(id, name, age)
SET age = IF(age='', NULL, age);
- æ¥ä»ãã©ãŒããã
MySQLã®æ¥ä»åïŒDATE, DATETIMEïŒã¯YYYY-MM-DD
圢åŒãæšæºã§ãããã以å€ã®åœ¢åŒïŒäŸ:MM/DD/YYYY
ïŒã䜿çšããŠããå Žåãã€ã³ããŒãåã«ããŒã¿ã倿ããå¿ èŠããããŸãã
ããªãã¿ãšå²ã¿æåã®èšå®
CSVãã¡ã€ã«å ã®ããªãã¿ïŒåºåãæåïŒãMySQLã®æåŸ ãã圢åŒãšç°ãªãå Žåããšã©ãŒãçºçããŸãã
- ããªãã¿ãã¿ãã®å Žå
CSVãã¡ã€ã«ãã¿ãåºåãã®å Žåã以äžã®ããã«æå®ããŸãã
FIELDS TERMINATED BY ' '
- å€ãå²ã¿æåïŒããã«ã¯ã©ãŒãïŒã§å²ãŸããŠããå Žå
å²ã¿æåãæå®ããŸãã
FIELDS ENCLOSED BY '"'
6. ãšã¯ã¹ããŒããšã€ã³ããŒãã®å®è·µäŸ
MySQLã§ã®ããŒã¿ãšã¯ã¹ããŒããšã€ã³ããŒãã¯ãããŒã¿ç§»è¡ãããã¯ã¢ããäœæ¥ã«ãããŠéèŠãªããã»ã¹ã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãå®éã®ã³ãã³ãäŸã亀ããªãããå¹ççãªãšã¯ã¹ããŒããšã€ã³ããŒãã®æ¹æ³ã解説ããŸãã
ããŒã¿ãšã¯ã¹ããŒãã®æé
MySQLã®ããŒã¿ããšã¯ã¹ããŒãããå Žåãmysqldump
ã³ãã³ãã䜿çšããŸãããã®ã³ãã³ãã䜿ããšãããŒã¿ããŒã¹ãããŒãã«ã®ããã¯ã¢ãããç°¡åã«ååŸã§ããŸãã
ããŒã¿ããŒã¹å šäœã®ãšã¯ã¹ããŒã
以äžã®ã³ãã³ãã§ãç¹å®ã®ããŒã¿ããŒã¹ããšã¯ã¹ããŒãã§ããŸãã
mysqldump -u root -p example_db > example_db.sql
-u root
: ãŠãŒã¶ãŒåãæå®ããŸãã-p
: ãã¹ã¯ãŒãã®å ¥åãæ±ãããªãã·ã§ã³ãexample_db.sql
: ãšã¯ã¹ããŒãå ã®ãã¡ã€ã«åã
ç¹å®ã®ããŒãã«ããšã¯ã¹ããŒã
ããŒã¿ããŒã¹å šäœã§ã¯ãªããç¹å®ã®ããŒãã«ã ãããšã¯ã¹ããŒããããå Žåã¯ã以äžã®ããã«æå®ããŸãã
mysqldump -u root -p example_db example_table > example_table.sql
è€æ°ã®ããŒã¿ããŒã¹ããšã¯ã¹ããŒã
è€æ°ã®ããŒã¿ããŒã¹ãããã¯ã¢ããããã«ã¯ã--databases
ãªãã·ã§ã³ã䜿çšããŸãã
mysqldump -u root -p --databases db1 db2 > multiple_dbs.sql
ãã¹ãŠã®ããŒã¿ããŒã¹ããšã¯ã¹ããŒã
ãµãŒããŒå
ã®ãã¹ãŠã®ããŒã¿ããŒã¹ãããã¯ã¢ããããå Žåã¯ã--all-databases
ãªãã·ã§ã³ã䜿çšããŸãã
mysqldump -u root -p --all-databases > all_databases.sql
ããŒã¿ã€ã³ããŒãã®æé
ãšã¯ã¹ããŒãããããŒã¿ãã€ã³ããŒãããã«ã¯ãmysql
ã³ãã³ãã䜿çšããŸãã以äžã«å
·äœäŸã瀺ããŸãã
ããŒã¿ããŒã¹å šäœã®ã€ã³ããŒã
ãšã¯ã¹ããŒãããããŒã¿ããŒã¹ã埩å ããã«ã¯ã以äžã®ã³ãã³ããå®è¡ããŸãã
mysql -u root -p example_db < example_db.sql
ç¹å®ã®ããŒãã«ãã€ã³ããŒã
ãšã¯ã¹ããŒãããç¹å®ã®ããŒãã«ããŒã¿ã埩å ããå Žåãåæ§ã®æ¹æ³ã§å®è¡ããŸãã
mysql -u root -p example_db < example_table.sql
ããŒã¿ããŒã¹äœæãšã€ã³ããŒãã®çµã¿åãã
ã€ã³ããŒãå ã®ããŒã¿ããŒã¹ããŸã ååšããªãå Žåãäºåã«ããŒã¿ããŒã¹ãäœæããŠããå¿ èŠããããŸãã以äžã®æé ãåèã«ããŠãã ããã
- ããŒã¿ããŒã¹ãäœæããïŒ
CREATE DATABASE example_db;
- äœæããããŒã¿ããŒã¹ã«ã€ã³ããŒãããïŒ
mysql -u root -p example_db < example_db.sql
ãšã¯ã¹ããŒããšã€ã³ããŒãã®æ³šæç¹
- ãšã¯ã¹ããŒããã¡ã€ã«ã®ç¢ºèª
ãšã¯ã¹ããŒãåŸã«ãã¡ã€ã«ã®å 容ã確èªããŠãäžå®å šãªããã¯ã¢ãããå«ãŸããŠããªããæ€èšŒããŸãã
less example_db.sql
- ãšã³ã³ãŒãã£ã³ã°ã®äžèŽ
ãšã¯ã¹ããŒãæãšã€ã³ããŒãæã§æåã³ãŒããäžèŽããŠããã確èªããŠãã ãããããã©ã«ãã§UTF-8ã䜿çšãããŸãããå¿ èŠã«å¿ããŠ--default-character-set
ãªãã·ã§ã³ãæå®ããŸãã
mysqldump --default-character-set=utf8 -u root -p example_db > example_db.sql
- æš©éã®èšå®
ã€ã³ããŒãããéããŠãŒã¶ãŒãé©åãªæš©éãæã£ãŠããããšã確èªããŠãã ããã
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
ã

7. ãã©ãã«ã·ã¥ãŒãã£ã³ã°
MySQLã§ããŒã¿ãã€ã³ããŒãããéã«ã¯ãããŸããŸãªãšã©ãŒãåé¡ãçºçããããšããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããããããã©ãã«ãšãã®å¯ŸåŠæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
ãããããšã©ãŒãšãã®å¯ŸåŠæ³
ERROR 1148 (42000): The used command is not allowed with this MySQL version
- åå
LOAD DATA INFILE
ã³ãã³ããç¡å¹åãããŠããå Žåã«çºçããŸããã»ãã¥ãªãã£äžã®çç±ã§ãå€ãã®MySQLã€ã³ã¹ããŒã«ã§ã¯local_infile
ãªãã·ã§ã³ãããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããŸãã - å¯ŸåŠæ³
local_infile
ã®çŸåšã®èšå®ã確èªããŸããSHOW VARIABLES LIKE 'local_infile';
- ã¯ã©ã€ã¢ã³ãæ¥ç¶æã«æå¹åããŸãã
mysql --local-infile=1 -u root -p
- ãµãŒããŒèšå®ã倿ŽããŠæ°žç¶çã«æå¹åããŸãã
- MySQLèšå®ãã¡ã€ã«ïŒ
my.cnf
ãŸãã¯my.ini
ïŒã«ä»¥äžã远å ïŒ
[mysqld]
- MySQLèšå®ãã¡ã€ã«ïŒ
local_infile=1 MySQLãµãŒããŒãåèµ·åããŸãã
ERROR 1366: Incorrect string value
- åå
ã€ã³ããŒãããããŒã¿ãããŒã¿ããŒã¹ã®æåã³ãŒãèšå®ãšäžèŽããŠããªãå Žåã«çºçããŸããç¹ã«ãæ¥æ¬èªãªã©ã®ãã«ããã€ãæåãåå ãšãªãããšãå€ãã§ãã - å¯ŸåŠæ³
- ããŒã¿ããŒã¹ãšããŒãã«ã®æåã³ãŒãã確èªããŸãã
SHOW VARIABLES LIKE 'character_set%';
- å¿
èŠã«å¿ããŠæåã³ãŒããçµ±äžããŸãã以äžã¯UTF-8ã«èšå®ããäŸã§ãã
ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;
- ãšã¯ã¹ããŒããšã€ã³ããŒãæã«æåã³ãŒããæç€ºããŸãã
mysqldump --default-character-set=utf8mb4 -u root -p example_db > example_db.sql mysql --default-character-set=utf8mb4 -u root -p example_db < example_db.sql
ERROR 1062: Duplicate entry
- åå
ã€ã³ããŒãããããŒã¿ã«ãããŒãã«ã®ãã©ã€ããªããŒãäžæå¶çŽã«éåããéè€ããŒã¿ãå«ãŸããŠããŸãã - å¯ŸåŠæ³
- éè€ããŒã¿ãç¡èŠããïŒ
LOAD DATA INFILE '/path/to/example.csv' INTO TABLE example_table FIELDS TERMINATED BY ',' LINES TERMINATED BY ' ' IGNORE;
- éè€æã«æŽæ°ããïŒ
INSERT INTO example_table (id, name, age) VALUES (1, 'John Doe', 30) ON DUPLICATE KEY UPDATE name = VALUES(name), age = VALUES(age);
ERROR 1045: Access denied for user
- åå
ã€ã³ããŒãå ã®ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããæš©éãäžè¶³ããŠããŸãã - å¯ŸåŠæ³
- ãŠãŒã¶ãŒã®æš©éã確èªããŸãã
SHOW GRANTS FOR 'user'@'localhost';
- å¿
èŠãªæš©éãä»äžããŸãã
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost'; FLUSH PRIVILEGES;
倧容éããŒã¿ã€ã³ããŒãæã®åé¡ãšå¯Ÿç
ã¡ã¢ãªäžè¶³ãšã©ãŒ
- åå
倧éã®ããŒã¿ãäžåºŠã«ã€ã³ããŒãããããšã§ãã¡ã¢ãªãäžè¶³ããå ŽåããããŸãã - å¯ŸåŠæ³
- ããŒã¿ãåå²ããŠã€ã³ããŒãããŸããLinux/Macã§ã¯
split
ã³ãã³ãã䜿çšã§ããŸããsplit -l 1000 large_file.csv part_
- åéšåãã¡ã€ã«ãé çªã«ã€ã³ããŒãããŸãã
ãµãŒããŒã®ã¿ã€ã ã¢ãŠã
- åå
倧éããŒã¿ã®ã€ã³ããŒããæéå ã«å®äºãããã¿ã€ã ã¢ãŠããçºçããŸãã - å¯ŸåŠæ³
MySQLã®èšå®ã倿ŽããŠã¿ã€ã ã¢ãŠãæéãå»¶é·ããŸãã
SET GLOBAL net_read_timeout = 600;
SET GLOBAL net_write_timeout = 600;
8. FAQïŒãããã質åïŒ
MySQLã®ããŒã¿ã€ã³ããŒãã«é¢ããŠãèªè ããå¯ããããããšãå€ã質åããŸãšããŸãããå®éã®éçšã§çŽé¢ããå¯èœæ§ã®ããåé¡ã«ã€ããŠãã·ã³ãã«ã§ããããããåçããå±ãããŸãã
Q1: CSVãã¡ã€ã«ã§ç¹å®ã®åã ããã€ã³ããŒãããããšã¯ã§ããŸããïŒ
A: ã¯ããå¯èœã§ããLOAD DATA INFILE
ã³ãã³ãã䜿çšããéãã€ã³ããŒããããåãæå®ããããšã§å¯Ÿå¿ã§ããŸãã
äŸ:
以äžã¯ãCSVãã¡ã€ã«ã®æåãš3çªç®ã®åãexample_table
ã®id
ãšage
ã«ã©ã ã«ã€ã³ããŒãããäŸã§ãã
LOAD DATA INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
(id, @dummy, age);
ãã®ããã«ãäžèŠãªåã@dummy
ã®ãããªãã¬ãŒã¹ãã«ããŒã«å²ãåœãŠãããšã§ãç¹å®ã®åã ããã€ã³ããŒãã§ããŸãã
Q2: 倧容éããŒã¿ãå¹ççã«ã€ã³ããŒãããæ¹æ³ã¯ïŒ
A: 倧éããŒã¿ã®ã€ã³ããŒãã«ã¯ä»¥äžã®æ¹æ³ãæå¹ã§ãã
- ã€ã³ããã¯ã¹ãäžæçã«ç¡å¹åãã
ã€ã³ããŒãåã«ã€ã³ããã¯ã¹ãç¡å¹åããã€ã³ããŒãå®äºåŸã«ååºŠäœæããããšã§ãããã©ãŒãã³ã¹ãåäžããŸãã
ALTER TABLE example_table DISABLE KEYS;
-- ã€ã³ããŒãåŠç
ALTER TABLE example_table ENABLE KEYS;
- ãã«ã¯ã€ã³ãµãŒããæŽ»çšãã
LOAD DATA INFILE
ã³ãã³ãã¯å€§éããŒã¿ã®åŠçã«æé©ã§ããã€ã³ããŒãé床ãããã«åäžãããã«ã¯ãLOCAL
ãªãã·ã§ã³ã䜿ã£ãŠã¯ã©ã€ã¢ã³ãåŽã®ãã¡ã€ã«ãããŒãã§ããŸãã
LOAD DATA LOCAL INFILE '/path/to/large_file.csv' INTO TABLE example_table;
- ãã¡ã€ã«åå²
LinuxãMacã§ã¯split
ã³ãã³ãã䜿çšããŠå€§ããªãã¡ã€ã«ãåå²ããå°ããªåäœã§é 次ã€ã³ããŒãããæ¹æ³ã广çã§ãã
Q3: ã€ã³ããŒãæã«ããŒã¿ãæ€èšŒããæ¹æ³ã¯ãããŸããïŒ
A: ã¯ããã€ã³ããŒãæã«ããŒã¿ãæ€èšŒããããã€ãã®æ¹æ³ããããŸãã
- äžæããŒãã«ã䜿çš
ããŒã¿ãçŽæ¥æ¬çªããŒãã«ã«ã€ã³ããŒãããã®ã§ã¯ãªããäžæããŒãã«ã«ã€ã³ããŒãããŠããããŒã¿ã確èªããŸãã
CREATE TEMPORARY TABLE temp_table LIKE example_table;
LOAD DATA INFILE '/path/to/example.csv' INTO TABLE temp_table;
-- ããŒã¿ç¢ºèªåŸã«æ¬çªããŒãã«ãžç§»è¡
INSERT INTO example_table SELECT * FROM temp_table;
- ãšã©ãŒåºåã®ç¢ºèª
LOAD DATA INFILE
ã³ãã³ãã«ERRORS
ãªãã·ã§ã³ãä»ãããšããšã©ãŒã®è©³çްãååŸã§ããŸãã
LOAD DATA INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
IGNORE 1 LINES
(@col1, @col2, @col3)
SET col1 = IF(@col1='', NULL, @col1),
col2 = @col2,
col3 = @col3;
Q4: ããŒã¿ã€ã³ããŒãäžã«MySQLãã¿ã€ã ã¢ãŠãããŸãããã©ãããã°ããã§ããïŒ
A: ã¿ã€ã ã¢ãŠãã®åé¡ã¯ãããŒã¿éããµãŒããŒèšå®ã«èµ·å ããå ŽåããããŸãã以äžã®æé ã§å¯ŸåŠå¯èœã§ãã
- ã¿ã€ã ã¢ãŠãæéã®å»¶é·
MySQLã®ã¿ã€ã ã¢ãŠãèšå®ã調æŽããŸãã
SET GLOBAL net_read_timeout = 600;
SET GLOBAL net_write_timeout = 600;
- ãã¡ã€ã«ãåå²ããŠã€ã³ããŒã
倧ããªãã¡ã€ã«ãåå²ããŠããã€ã³ããŒãããããšã§ãã¿ã€ã ã¢ãŠããé²ãããšãã§ããŸãã - MySQLã®ãã°ã確èª
ã¿ã€ã ã¢ãŠãã®åå ãç¹å®ããããã«ããšã©ãŒãã°ã確èªããŠãã ããã
Q5: ã€ã³ããŒãæã«ç©ºçœã»ã«ãNULL
ãšããŠæ±ãã«ã¯ã©ãããã°ããã§ããïŒ
A: LOAD DATA INFILE
ã³ãã³ãã®SET
ãªãã·ã§ã³ã䜿çšããŠã空çœã»ã«ãNULL
ãšããŠåŠçã§ããŸãã
äŸ:
以äžã®ã³ãã³ãã§ã¯ã空ã®å€ãNULL
ã«å€æããŠããŸãã
LOAD DATA INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
(name, age)
SET age = IF(age='', NULL, age);
9. ãŸãšã
ãã®èšäºã§ã¯ãMySQLã®ããŒã¿ã€ã³ããŒãã«é¢ããæé ããã€ã³ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«ã€ããŠè©³ãã解説ããŸãããåå¿è ããäžçŽè ãŸã§ãåèã«ã§ãããããå®è·µçãªæ å ±ãçã蟌ã¿ãŸããã以äžã«ãæ¬èšäºã§åãäžããéèŠãªãã€ã³ããæ¯ãè¿ããŸãã
èšäºã®èŠç¹
- åºæ¬æé ã®çè§£
LOAD DATA INFILE
ã³ãã³ããmysql
ã³ãã³ããæŽ»çšããŠãããŒã¿ãå¹çããã€ã³ããŒãããæ¹æ³ã解説ããŸããã- GUIããŒã«ïŒMySQL WorkbenchãphpMyAdminïŒã䜿çšããæè»œãªæ¹æ³ã玹ä»ããŸããã
- CSVãã¡ã€ã«ã®æ³šæç¹
- ãšã³ã³ãŒãã£ã³ã°ïŒUTF-8æšå¥šïŒãåæ°ã®äžèŽãNULLå€ã®æ±ããªã©ãããŒã¿æŽåæ§ãä¿ã€ããã®æ³šæç¹ãåãäžããŸããã
- ãšã¯ã¹ããŒããšã€ã³ããŒãã®å®è·µäŸ
mysqldump
ã³ãã³ãã䜿çšãããšã¯ã¹ããŒãããã€ã³ããŒããŸã§ã®å ·äœçãªæé ãæäŸããŸããã- ãµãŒããŒéã§ã®ããŒã¿ç§»è¡ãããã¯ã¢ããäœæ¥ã«ãå¿çšå¯èœã§ãã
- ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- ãããããšã©ãŒïŒäŸ:
ERROR 1148
ãERROR 1366
ïŒãšãã®å¯ŸåŠæ³ã詳ãã説æããŸããã - 倧容éããŒã¿ãã¿ã€ã ã¢ãŠãã«å¯Ÿå¿ããããã®ãã¹ããã©ã¯ãã£ã¹ã玹ä»ããŸããã
- FAQïŒãããã質åïŒ
- èªè ã®çåã«çãã圢ã§ãã€ã³ããŒãæã®ç¹å®åã®åŠçã倧容éããŒã¿ã®å¹ççãªã€ã³ããŒããããŒã¿æ€èšŒæ¹æ³ãªã©ãç¶²çŸ ããŸããã
ä»åŸã®åèãªãœãŒã¹
ããã«è©³ããåŠã³ããå Žåã以äžã®ãªãœãŒã¹ãåèã«ããŠãã ããã
- MySQLå
¬åŒããã¥ã¡ã³ãïŒè±èªçïŒ
MySQL Documentation
次ã®ã¹ããã
- ç¿åŸããç¥èãæŽ»çš
å®éã®ãããžã§ã¯ãã§ãã®èšäºã®æé ã詊ããªãããèªåã®ã¹ãã«ã匷åããŠãã ããã - é¢é£ãããã¯ã®åŠç¿
ããŒã¿ããŒã¹ç®¡çã«ãããããã¯ã¢ããæŠç¥ãã»ãã¥ãªãã£èšå®ã«ã€ããŠãåŠã¶ããšã§ãããã«å®è·µåãåäžããŸãã
MySQLã®ããŒã¿ã€ã³ããŒãã¯äžèŠé£ãããã«æãããããããŸãããããã®èšäºã§è§£èª¬ãããã€ã³ããæŒãããããšã§ãã¹ã ãŒãºã«äœæ¥ãé²ããããã¯ãã§ããä»åŸãããŒã¿ããŒã¹ç®¡çã®ã¹ãã«ã磚ããããå¹ççãªéçšãç®æããŸãããïŒ