- 1 1. ã¯ããã«
- 2 2. åºæ¬çãªINSERTæã®æ§æ
- 3 3. è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããæ¹æ³
- 4 4. 倧éããŒã¿ã®äžæ¬æ¿å ¥æ¹æ³
- 5 5. ããã©ãŒãã³ã¹æé©åã®ãã€ã³ã
- 6 6. ä»ã®ããŒã¿ããŒã¹ãšã®éã
- 7 7. FAQ
- 7.1 Q1: è€æ°è¡æ¿å ¥æã«ãšã©ãŒãçºçããŸãããã©ã®ããã«ãããã°ããã°è¯ãã§ããïŒ
- 7.2 Q2: LOAD DATA INFILEã䜿çšããéã®ã»ãã¥ãªãã£äžã®æ³šæç¹ã¯ïŒ
- 7.3 Q3: 倧éã®ããŒã¿ãæ¿å ¥ããéãããã©ãŒãã³ã¹ãäœäžããåå ã¯äœã§ããïŒ
- 7.4 Q4: æ¢åã®ããŒã¿ãããå Žåãè€æ°è¡æ¿å ¥ãå®å šã«å®è¡ã§ããŸããïŒ
- 7.5 Q5: ãããåŠçãè¡ãéã®æé©ãªãµã€ãºã¯ã©ããããã§ããïŒ
- 7.6 ãŸãšã
- 8 8. ãŸãšã
1. ã¯ããã«
MySQLã¯ãå€ãã®Webã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã§å©çšãããããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã®äžã€ã§ããããŒã¿ãå¹çãã管çããããã«ã¯ãé©åãªæ¿å ¥ïŒINSERTïŒæäœãæ¬ ãããŸãããç¹ã«ã倧éã®ããŒã¿ãåŠçããå Žåã1è¡ãã€æ¿å ¥ããæ¹æ³ã§ã¯æéãšãªãœãŒã¹ãããããããããšããããŸãã
ãã®èšäºã§ã¯ãMySQLã§è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããæ¹æ³ã«ã€ããŠè©³ãã解説ããŸãããã®ææ³ãçšããããšã§ãããŒã¿æ¿å ¥ã®å¹çãåäžããã·ã¹ãã ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«æ¹åããããšãå¯èœã§ãããŸããåå¿è ã®æ¹ã«ãçè§£ããããããã«ãåºæ¬ããå¿çšãŸã§é ã远ã£ãŠèª¬æããŠãããŸãã
以äžã®ãããªèª²é¡ãæã€æ¹ã«ç¹ã«åœ¹ç«ã€å 容ã§ãïŒ
- ãINSERTæãå¹çãã䜿ãããã
- ãããŒã¿æ¿å ¥ã®æéãççž®ãããã
- ã倧éããŒã¿ã®åŠçæ¹æ³ãåŠã³ããã
ããããå§ãŸãåã»ã¯ã·ã§ã³ã§ã¯ãå ·äœçãªã³ãŒãäŸã泚æç¹ã亀ããªãããMySQLã§è€æ°è¡ã®ããŒã¿ãæ¿å ¥ããæé©ãªæ¹æ³ãç¶²çŸ çã«è§£èª¬ããŸããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ããŸãåäžè¡ã®æ¿å ¥æ¹æ³ã«ã€ããŠåºæ¬ãæŒãããŠãããŸãããã
2. åºæ¬çãªINSERTæã®æ§æ
MySQLã§ããŒã¿ãæ¿å ¥ããéããŸãã¯åºæ¬ãšãªãåäžè¡ã®INSERTæãçè§£ããããšãéèŠã§ãããã®æ§æã¯éåžžã«ã·ã³ãã«ã§ãããMySQLã®æäœã«æ £ããç¬¬äžæ©ãšãªããŸããããã§ã¯ãåäžè¡ã®ããŒã¿ãæ¿å ¥ããåºæ¬æ§æãšå ·äœäŸã«ã€ããŠè§£èª¬ããŸãã
INSERTæã®åºæ¬æ§æ
åäžè¡ã®ããŒã¿ãããŒãã«ã«æ¿å ¥ããå Žåãåºæ¬çãªæ§æã¯ä»¥äžã®ããã«ãªããŸãïŒ
INSERT INTO ããŒãã«å (ã«ã©ã 1, ã«ã©ã 2, ...)
VALUES (å€1, å€2, ...);
- ããŒãã«å: ããŒã¿ãæ¿å ¥ãã察象ã®ããŒãã«ã®ååã§ãã
- ã«ã©ã 1, ã«ã©ã 2,âŠ: æ¿å ¥ããå€ãæ ŒçŽããããŒãã«å ã®ååãæå®ããŸãã
- å€1, å€2,âŠ: åã«ã©ã ã«å¯Ÿå¿ããå€ãæå®ããŸãã
åºæ¬äŸïŒé¡§å®¢æ å ±ãæ¿å ¥ãã
äŸãã°ã以äžã®ãããªãcustomersããšããããŒãã«ããããšããŸãã
id | name | |
---|---|---|
1 | Taro Yamada | taro@example.com |
ãã®ããŒãã«ã«æ°ãã顧客æ å ±ã远å ããINSERTæã¯æ¬¡ã®ããã«ãªããŸãïŒ
INSERT INTO customers (id, name, email)
VALUES (2, 'Hanako Tanaka', 'hanako@example.com');
å®è¡åŸããcustomersãããŒãã«ã¯ä»¥äžã®ããã«ãªããŸãïŒ
id | name | |
---|---|---|
1 | Taro Yamada | taro@example.com |
2 | Hanako Tanaka | hanako@example.com |
ã«ã©ã æå®ãçç¥ããæ¹æ³
ãã¹ãŠã®ã«ã©ã ã«å€ãæ¿å ¥ããå Žåãã«ã©ã åã®æå®ãçç¥ããããšãå¯èœã§ãããã®å Žåãå€ã®é åºã¯ããŒãã«ã®ã«ã©ã å®çŸ©é ã«äžèŽãããå¿ èŠããããŸãã
INSERT INTO customers
VALUES (3, 'Ichiro Suzuki', 'ichiro@example.com');
泚æç¹
- ããŒã¿åã®äžèŽ: æ¿å ¥ããå€ã®ããŒã¿åããããŒãã«ã§å®çŸ©ãããã«ã©ã ã®ããŒã¿åãšäžèŽããŠããå¿ èŠããããŸãã
- NULLå€ã®æ±ã: ã«ã©ã ãNULLã蚱容ããå Žåãå€ãæå®ããã«NULLãæ¿å ¥ã§ããŸãã
- ããã©ã«ãå€: ããã©ã«ãå€ãå®çŸ©ãããŠããã«ã©ã ã¯ãå€ãæå®ããªãå Žåã«ãã®ããã©ã«ãå€ãæ¿å ¥ãããŸãã
ãŸãšã
åºæ¬çãªINSERTæãæ£ããçè§£ããããšã§ãMySQLã§ã®ããŒã¿æäœãã¹ã ãŒãºã«è¡ããããã«ãªããŸãããã®åäžè¡æ¿å ¥ã®çè§£ã¯ã次ã®ãè€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããæ¹æ³ãã®åºç€ãšãªããŸãã
3. è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããæ¹æ³
MySQLã§ã¯ã1åã®SQLæã§è€æ°è¡ã®ããŒã¿ãæ¿å ¥ããããšãã§ããŸãããã®æ¹æ³ã䜿çšãããšãç¹°ãè¿ãINSERTæãå®è¡ãããããå¹ççã§ãããŒã¿ããŒã¹ãžã®è² è·ã軜æžã§ããŸããããã§ã¯ãè€æ°è¡æ¿å ¥ã®æ§æãšå ·äœäŸã解説ããŸãã
è€æ°è¡æ¿å ¥ã®åºæ¬æ§æ
è€æ°è¡ãäžåºŠã«æ¿å ¥ããå Žåã以äžã®ãããªæ§æã䜿çšããŸãïŒ
INSERT INTO ããŒãã«å (ã«ã©ã 1, ã«ã©ã 2, ...)
VALUES
(å€1_1, å€1_2, ...),
(å€2_1, å€2_2, ...),
(å€3_1, å€3_2, ...);
- åè¡ã®ããŒã¿ãæ¬åŒ§ã§å²ã¿ãè¡ããšã«ã«ã³ãã§åºåããŸãã
- ãVALUESãå¥ã¯1åã ãèšè¿°ããŸãã
åºæ¬äŸïŒè€æ°ã®é¡§å®¢æ å ±ãæ¿å ¥ãã
以äžã®äŸã§ã¯ãcustomers
ããŒãã«ã«è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å
¥ããŠããŸãã
INSERT INTO customers (id, name, email)
VALUES
(4, 'Makoto Kato', 'makoto@example.com'),
(5, 'Sakura Mori', 'sakura@example.com'),
(6, 'Kei Tanaka', 'kei@example.com');
å®è¡åŸãããŒãã«ã¯ä»¥äžã®ããã«æŽæ°ãããŸãïŒ
id | name | |
---|---|---|
1 | Taro Yamada | taro@example.com |
2 | Hanako Tanaka | hanako@example.com |
4 | Makoto Kato | makoto@example.com |
5 | Sakura Mori | sakura@example.com |
6 | Kei Tanaka | kei@example.com |
å¹ççãªç¹
- ãããã¯ãŒã¯è² è·ã®è»œæž: 1åã®SQLæã§è€æ°è¡ãæ¿å ¥ããããããµãŒããŒãšã®éä¿¡åæ°ãæžããŸãã
- é«éå: æ¿å ¥æäœã1åã§æžããããåŠçãå¹çåãããŸãã
泚æç¹
- ã«ã©ã æ°ãšå€ã®æ°ãäžèŽããããš
- äŸ: ã«ã©ã ã3ã€ã®å Žåãåè¡ã®å€ã3ã€ã§ãªããã°ãšã©ãŒãçºçããŸãã
- ããŒã¿åã®äžèŽ
- åå€ã®ããŒã¿åããããŒãã«ã§å®çŸ©ãããã«ã©ã ã®ããŒã¿åãšäžèŽããå¿ èŠããããŸãã
- éè€ãšã©ãŒã®åé¿
- ãã©ã€ããªããŒããŠããŒã¯ããŒã®å¶çŽãããå ŽåãåãããŒã®ããŒã¿ãæ¿å ¥ããããšãããšãšã©ãŒã«ãªããŸãã
ãšã©ãŒåé¿ã®å·¥å€«ïŒIGNORE
ãªãã·ã§ã³
IGNORE
ã䜿çšããããšã§ããšã©ãŒãçºçããŠãã¹ãããããŠåŠçãç¶è¡ã§ããŸãã
INSERT IGNORE INTO customers (id, name, email)
VALUES
(7, 'Ryoichi Suzuki', 'ryoichi@example.com'),
(5, 'Duplicate User', 'duplicate@example.com'); -- ãã®è¡ã¯ç¡èŠããã
ãŸãšã
è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããããšã§ãå¹ççã«ããŒã¿ããŒã¹ãæäœã§ããŸããããã«ãããåŠçæéã®ççž®ããµãŒããŒè² è·ã®è»œæžãæåŸ ã§ããŸãã
4. 倧éããŒã¿ã®äžæ¬æ¿å ¥æ¹æ³
倧éã®ããŒã¿ãæ¿å
¥ããå Žåãéåžžã®INSERTæã§ã¯éå¹çã«ãªãããšããããŸããMySQLã§ã¯ã倧éã®ããŒã¿ãå¹çããæ¿å
¥ããããã«ãLOAD DATA INFILE
ããšããã³ãã³ãã䜿çšã§ããŸãããã®æ¹æ³ã¯ãå€§èŠæš¡ãªããŒã¿ã»ãããäžæ¬ã§ããŒãã«ã«æ ŒçŽããéã«éåžžã«æçšã§ãã
LOAD DATA INFILE
ã®åºæ¬æ§æ
以äžãLOAD DATA INFILE
ã®åºæ¬çãªæ§æã§ãïŒ
LOAD DATA INFILE 'ãã¡ã€ã«ãã¹'
INTO TABLE ããŒãã«å
FIELDS TERMINATED BY ',' -- ãã£ãŒã«ãã®åºåãæå
LINES TERMINATED BY '\n' -- è¡ã®åºåãæå
(ã«ã©ã 1, ã«ã©ã 2, ...);
INFILE
: æ¿å ¥ããããŒã¿ãæ ŒçŽããããã¡ã€ã«ã®ãã¹ãæå®ããŸããFIELDS TERMINATED BY
: åãã£ãŒã«ãïŒåïŒã®åºåãæåãæå®ããŸãïŒäŸ: ã«ã³ãã,ãïŒãLINES TERMINATED BY
: åè¡ã®åºåãæåãæå®ããŸãïŒäŸ: æ¹è¡ã\nãïŒã(ã«ã©ã 1, ã«ã©ã 2, ...)
: ããŒã¿ãæ¿å ¥ããã«ã©ã ãæå®ããŸãã
åºæ¬äŸïŒCSVãã¡ã€ã«ããããŒã¿ãæ¿å ¥ãã
äŸãã°ã以äžã®ãããªCSVãã¡ã€ã«ïŒdata.csv
ïŒããããšããŸãïŒ
4,Makoto Kato,makoto@example.com
5,Sakura Mori,sakura@example.com
6,Kei Tanaka,kei@example.com
ãã®ãã¡ã€ã«ãcustomers
ããŒãã«ã«æ¿å
¥ããå Žåã以äžã®ã³ãã³ããå®è¡ããŸãïŒ
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);
LOCAL
ãªãã·ã§ã³ã®äœ¿çš
ãµãŒããŒã§ã¯ãªãã¯ã©ã€ã¢ã³ãåŽã«CSVãã¡ã€ã«ãããå ŽåãLOCAL
ãªãã·ã§ã³ã䜿çšããŸãïŒ
LOAD DATA LOCAL INFILE '/path/to/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);
ããã©ãŒãã³ã¹æé©åã®ãã€ã³ã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®å©çš
- æ¿å ¥åŠçããã©ã³ã¶ã¯ã·ã§ã³å ã§è¡ããšããšã©ãŒçºçæã«ããŒã«ããã¯å¯èœã§ãã
START TRANSACTION;
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE customers;
COMMIT;
- ã€ã³ããã¯ã¹ã®äžæç¡å¹å
- æ¿å ¥åã«ã€ã³ããã¯ã¹ãç¡å¹åããæ¿å ¥åŸã«å床æå¹åãããšãæ¿å ¥åŠçãé«éåããŸãã
ALTER TABLE customers DISABLE KEYS;
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE customers;
ALTER TABLE customers ENABLE KEYS;
SET
å¥ã§ããŒã¿ãå å·¥
- æ¿å ¥åã«ããŒã¿ãå å·¥ã§ããŸãïŒ
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, @email)
SET email = LOWER(@email);
泚æç¹
- ãã¡ã€ã«ã®æš©é:
LOAD DATA INFILE
ã䜿çšããã«ã¯ãMySQLãµãŒããŒããã¡ã€ã«ãžã®ã¢ã¯ã»ã¹æš©ãæã£ãŠããå¿ èŠããããŸãã - ã»ãã¥ãªãã£:
LOCAL
ãªãã·ã§ã³ã䜿çšããå Žåãå€éšããã®æ»æã«å¯ŸããŠååãªå¯Ÿçãè¬ããå¿ èŠããããŸãã
ãŸãšã
LOAD DATA INFILE
ã¯ã倧éã®ããŒã¿ãå¹ççã«æ¿å
¥ããããã®éåžžã«åŒ·åãªããŒã«ã§ãããã®æ¹æ³ã掻çšããããšã§ãããŒã¿ããŒã¹ã®æäœå¹çã倧å¹
ã«åäžãããããšãå¯èœã§ãã
5. ããã©ãŒãã³ã¹æé©åã®ãã€ã³ã
MySQLã§ããŒã¿ãæ¿å ¥ããéãç¹ã«å€§éã®ããŒã¿ãæ±ãå Žåã¯ãå¹çæ§ãé«ããããã®æé©åãéèŠã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãããã©ãŒãã³ã¹ãæå€§éã«åŒãåºãããã®å ·äœçãªæ¹æ³ã解説ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã®äœ¿çš
ãã©ã³ã¶ã¯ã·ã§ã³ãå©çšããããšã§ãè€æ°ã®INSERTæäœããŸãšããŠåŠçããããšãã§ããŸããããã«ãããåå¥ã«ã³ããããè¡ãå Žåãããå€§å¹ ã«é«éåã§ããŸãã
äŸ: ãã©ã³ã¶ã¯ã·ã§ã³ãå©çšããINSERT
START TRANSACTION;
INSERT INTO customers (id, name, email)
VALUES (7, 'Haruto Sato', 'haruto@example.com'),
(8, 'Yuki Aoki', 'yuki@example.com');
COMMIT;
ãã€ã³ã:
- ãã©ã³ã¶ã¯ã·ã§ã³å ã§è€æ°ã®INSERTæãå®è¡ããæåŸã«äžæ¬ããŠã³ãããããããšã§ããã£ã¹ã¯I/OãæžãããŸãã
- ãšã©ãŒãçºçããå Žåã¯
ROLLBACK
ã§å šäœãåãæ¶ãããšãå¯èœã§ãã
ã€ã³ããã¯ã¹ã®äžæçãªç¡å¹å
ããŒã¿æ¿å ¥æã«ã€ã³ããã¯ã¹ãæŽæ°ããããšãåŠçãé ããªãå ŽåããããŸããã€ã³ããã¯ã¹ãäžæçã«ç¡å¹åããæ¿å ¥åŸã«å床æå¹åããããšã§å¹çåã§ããŸãã
äŸ: ã€ã³ããã¯ã¹ãç¡å¹åããŠããŒã¿ãæ¿å ¥
ALTER TABLE customers DISABLE KEYS;
INSERT INTO customers (id, name, email)
VALUES (9, 'Kaori Tanaka', 'kaori@example.com'),
(10, 'Shota Yamada', 'shota@example.com');
ALTER TABLE customers ENABLE KEYS;
泚æç¹:
- ãã®ææ³ã¯ã倧éã®ããŒã¿ãäžæ¬ã§æ¿å ¥ããéã«å¹æçã§ãã
- ç¡å¹åã§ããã®ã¯ã»ã«ã³ããªã€ã³ããã¯ã¹ã®ã¿ã§ããã©ã€ããªããŒã«ã¯é©çšãããŸããã
ãããåŠçã®æŽ»çš
ããŒã¿ãå°åãã«ããŠæ¿å ¥ãããããåŠçãè¡ããšãå¹çãåäžããå ŽåããããŸããäžåºŠã«å€§éã®ããŒã¿ãæ¿å ¥ãããšãã¡ã¢ãªäžè¶³ãã¿ã€ã ã¢ãŠãã®ãªã¹ã¯ãé«ãŸãããã§ãã
äŸ: ããããµã€ãºãæå®ããŠINSERT
-- 1åã®INSERTã§100è¡ãã€æ¿å
¥
INSERT INTO customers (id, name, email)
VALUES
(11, 'Hiroshi Kato', 'hiroshi@example.com'),
(12, 'Miku Yamamoto', 'miku@example.com'),
... -- 98è¡ã远å
(110, 'Rina Suzuki', 'rina@example.com');
ãã€ã³ã:
- ããããµã€ãºïŒäŸ: 100è¡ã1000è¡ïŒã調æŽããŠããµãŒããŒè² è·ãæããŸãã
- ãã°ã®ãµã€ãºããµãŒããŒèšå®ã«æ³šæããŠãã ããã
ãããã¡ãµã€ãºãšèšå®ã®èª¿æŽ
MySQLã®èšå®ãã¡ã€ã«ïŒmy.cnf
ïŒã§ãæ¿å
¥ããã©ãŒãã³ã¹ãåäžãããããã®èª¿æŽãè¡ããŸãã
æšå¥šãããèšå®é ç®:
innodb_buffer_pool_size
: ã¡ã¢ãªå ã§ããŒã¿ãå¹ççã«ç®¡çããããã®ãµã€ãºãå¢ãããbulk_insert_buffer_size
: äžæ¬æ¿å ¥æã«äœ¿çšããããããã¡ãµã€ãºãæ¡å€§ããã
äŸ: èšå®å€æŽ
[mysqld]
innodb_buffer_pool_size=1G
bulk_insert_buffer_size=512M
èšå®å€æŽåŸãMySQLãµãŒããŒãåèµ·åããŠåæ ããŸãã
ãŸãšã
MySQLã§ããŒã¿æ¿å ¥ã®ããã©ãŒãã³ã¹ãæé©åããã«ã¯ã以äžã®æ¹æ³ãæå¹ã§ãïŒ
- ãã©ã³ã¶ã¯ã·ã§ã³ã®å©çšã§å¹çåã
- ã€ã³ããã¯ã¹ã®ç¡å¹åã§æ¿å ¥é床ãåäžã
- ãããåŠçã§è² è·åæ£ã
- ãµãŒããŒèšå®ã®èª¿æŽã§æå€§éã®æ§èœãåŒãåºãã
ãããã®æ¹æ³ãçµã¿åãããããšã§ã倧éã®ããŒã¿æ¿å ¥ãå¹çããè¡ãããšãå¯èœã§ãã

6. ä»ã®ããŒã¿ããŒã¹ãšã®éã
MySQLã§ã®ããŒã¿æ¿å ¥æäœã¯ãå€ãã®ããŒã¿ããŒã¹ãšäŒŒãŠããç¹ãããã°ãç¬èªã®ç¹åŸŽããããŸãããã®èšäºã§ã¯ãMySQLãšä»ã®äžè¬çãªããŒã¿ããŒã¹ïŒäŸ: PostgreSQLãOracleïŒã«ãããè€æ°è¡ã®ããŒã¿æ¿å ¥æ¹æ³ã®éãã«ã€ããŠè§£èª¬ããŸãã
MySQLãšPostgreSQLã®æ¯èŒ
1. è€æ°è¡æ¿å ¥ã®æ§æ
- MySQLãšPostgreSQLã§ã¯ãåºæ¬çã«åãæ§æã䜿çšã§ããŸãã
MySQLã®äŸ:
INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');
PostgreSQLã®äŸ:
INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');
éã:
- PostgreSQLã§ã¯
RETURNING
å¥ã远å ããŠãæ¿å ¥ãããããŒã¿ãååŸããããšãå¯èœã§ãã
INSERT INTO customers (id, name, email)
VALUES
(3, 'Sakura Mori', 'sakura@example.com')
RETURNING *;
2. ãã©ã³ã¶ã¯ã·ã§ã³ã®æ±ã
- äž¡æ¹ãšããã©ã³ã¶ã¯ã·ã§ã³ããµããŒãããŠããŸãããPostgreSQLã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®åé¢ã¬ãã«ãããŒã¿æŽåæ§ã«ãããŠããã峿 Œãªããã©ã«ãèšå®ãæã£ãŠããŸãã
MySQLãšOracleã®æ¯èŒ
1. è€æ°è¡æ¿å ¥ã®æ¹æ³
Oracleã§ã¯ãMySQLãšã¯ç°ãªããINSERT ALL
ãæ§æã䜿çšããããšãå¯èœã§ãã
MySQLã®æ¹æ³:
INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');
Oracleã®æ¹æ³ïŒINSERT ALLïŒ:
INSERT ALL
INTO customers (id, name, email) VALUES (1, 'Taro Yamada', 'taro@example.com')
INTO customers (id, name, email) VALUES (2, 'Hanako Tanaka', 'hanako@example.com')
SELECT * FROM dual;
éã:
- MySQLã¯åäžã®
VALUES
å¥ã§è€æ°è¡ãæ¿å ¥ããŸãããOracleã§ã¯INSERT ALL
æ§æã䜿çšããŠè€æ°è¡ãåå¥ã«æ¿å ¥ã§ããŸãã - Oracleã§ã¯
dual
ãšããç¹æ®ãªä»®æ³ããŒãã«ãå¿ èŠãªå ŽåããããŸãã
ãã®ä»ã®éã
1. ããŒã¿åã®éã
- MySQLã§ã¯
TEXT
ãBLOB
åããã䜿çšããŸãããOracleãPostgreSQLã§ã¯CLOB
ãBYTEA
ãšãã£ãç°ãªãããŒã¿åã䜿çšããŸãã - æ¿å ¥æã«ã¯ãããŒã¿åã®éãã«æ³šæãå¿ èŠã§ãã
2. ãšã©ãŒãã³ããªã³ã°
- MySQLã§ã¯ã
IGNORE
ãªãã·ã§ã³ã䜿çšããŠãšã©ãŒãç¡èŠããããšãã§ããŸãã
INSERT IGNORE INTO customers (id, name, email)
VALUES (1, 'Duplicate User', 'duplicate@example.com');
- PostgreSQLãOracleã§ã¯ããšã©ãŒãã³ããªã³ã°ã«å°çšã®äŸå€åŠçïŒäŸ:
EXCEPTION
ãSAVEPOINT
ïŒã䜿çšããŸãã
3. äžæ¬æ¿å ¥ã®æ¹æ³
- MySQLã§ã¯
LOAD DATA INFILE
ãå©çšå¯èœã§ãããPostgreSQLã§ã¯COPY
ã³ãã³ããOracleã§ã¯SQL*Loader
ãšããããŒã«ã䜿çšããŸãã
ãŸãšã
MySQLãPostgreSQLãOracleã®éã«ã¯ãè€æ°è¡æ¿å ¥ãããŒã¿æäœã«é¢ããå ±éç¹ãšéãããããŸããããããã®ããŒã¿ããŒã¹ãæã€ç¹åŸŽãçè§£ããããšã§ãæé©ãªææ³ãéžæã§ããããã«ãªããŸãã
7. FAQ
ããã§ã¯ãMySQLã§ã®ããŒã¿æ¿å ¥ã«é¢ããŠãããã質åãšãã®è§£æ±ºæ¹æ³ã«ã€ããŠè§£èª¬ããŸããèªè ãæ±ããã¡ãªçåãäºåã«è§£æ¶ããã¹ã ãŒãºã«äœæ¥ãé²ããããããã«ããŸãã
Q1: è€æ°è¡æ¿å ¥æã«ãšã©ãŒãçºçããŸãããã©ã®ããã«ãããã°ããã°è¯ãã§ããïŒ
A: è€æ°è¡æ¿å ¥æã«ãšã©ãŒãçºçããå Žåã以äžã®ç¹ã確èªããŠãã ããïŒ
- ããŒã¿åã®äžèŽ
- åã«ã©ã ã«æ¿å ¥ããå€ããããŒãã«ã§å®çŸ©ãããŠããããŒã¿åã«é©åããŠããã確èªããŸãã
- äŸ:
VARCHAR
åã«æ°åã ããæ¿å ¥ããŠããªããã
- å€ã®æ°ãšã«ã©ã ã®æ°ãäžèŽããŠããã
INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada'), -- ãšã©ãŒ: emailã®å€ãäžè¶³
(2, 'Hanako Tanaka', 'hanako@example.com');
- å¶çŽéå
- ãã©ã€ããªããŒããŠããŒã¯ããŒã®å¶çŽãæºãããŠããªãå Žåããšã©ãŒãçºçããŸãã
- 解決ç: ãšã©ãŒåé¿ã®ããã«
INSERT IGNORE
ãŸãã¯ON DUPLICATE KEY UPDATE
ã䜿çšããŸãã
Q2: LOAD DATA INFILE
ã䜿çšããéã®ã»ãã¥ãªãã£äžã®æ³šæç¹ã¯ïŒ
A: LOAD DATA INFILE
ã¯åŒ·åãªæ©èœã§ãããã»ãã¥ãªãã£ãªã¹ã¯ã䌎ãããšããããŸãã以äžã«æ³šæããŠãã ããïŒ
- ãã¡ã€ã«ã®ã¢ã¯ã»ã¹æš©é
- MySQLãµãŒããŒããã¡ã€ã«ã«ã¢ã¯ã»ã¹ã§ããããã«ãé©åãªãã¹ãšæš©éãèšå®ããŠãã ããã
SECURE_FILE_PRIV
ãã£ã¬ã¯ããªã®èšå®ã確èªããèš±å¯ããããã£ã¬ã¯ããªå ã®ãã¡ã€ã«ã®ã¿ã䜿çšããŸãã
LOCAL
ãªãã·ã§ã³ã®ãªã¹ã¯
LOAD DATA LOCAL INFILE
ã䜿çšããå Žåããªã¢ãŒããµãŒããŒããã®æªæãããã¡ã€ã«èªã¿èŸŒã¿ãé²ããããä¿¡é Œã§ããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ã®ã¿äœ¿çšããŠãã ããã
- ããŒã¿ã®æ€èšŒ
- ãã¡ã€ã«å ã®ããŒã¿ãäºåã«æ€èšŒããäžæ£ãªããŒã¿ãå«ãŸããŠããªãããšã確èªããŸãã
Q3: 倧éã®ããŒã¿ãæ¿å ¥ããéãããã©ãŒãã³ã¹ãäœäžããåå ã¯äœã§ããïŒ
A: ããã©ãŒãã³ã¹äœäžã®äž»ãªåå ãšãã®å¯Ÿçã¯ä»¥äžã®éãã§ãïŒ
- ã€ã³ããã¯ã¹ã®æŽæ°
- æ¿å ¥æã«ã€ã³ããã¯ã¹ãæŽæ°ããããšåŠçãé ããªããŸãã
- 察ç: æ¿å ¥åã«ã€ã³ããã¯ã¹ãç¡å¹åããæ¿å ¥åŸã«å床æå¹åããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ãã°
- åæ¿å ¥æäœãåå¥ã«ã³ãããããããšããã£ã¹ã¯I/Oãå¢ããåŠçé床ãäœäžããŸãã
- 察ç: ãã©ã³ã¶ã¯ã·ã§ã³ãå©çšããäžæ¬ããŠã³ãããããã
- ãããã¡èšå®ã®äžè¶³
innodb_buffer_pool_size
ãbulk_insert_buffer_size
ã®èšå®ãå°ãããšãããŒã¿æ¿å ¥ãé ããªãããšããããŸãã- 察ç: èšå®ã調æŽããŠååãªã¡ã¢ãªã確ä¿ããŸãã
Q4: æ¢åã®ããŒã¿ãããå Žåãè€æ°è¡æ¿å ¥ãå®å šã«å®è¡ã§ããŸããïŒ
A: ã¯ãã以äžã®æ¹æ³ã§æ¢åããŒã¿ãšã®ç«¶åãé²ããªããæ¿å ¥ã§ããŸãã
ON DUPLICATE KEY UPDATE
ã®äœ¿çš
INSERT INTO customers (id, name, email)
VALUES (1, 'Updated Name', 'updated@example.com')
ON DUPLICATE KEY UPDATE name = VALUES(name), email = VALUES(email);
REPLACE INTO
ã®äœ¿çš
REPLACE INTO customers (id, name, email)
VALUES (1, 'Replaced Name', 'replaced@example.com');
Q5: ãããåŠçãè¡ãéã®æé©ãªãµã€ãºã¯ã©ããããã§ããïŒ
A: æé©ãªããããµã€ãºã¯ã以äžã®èŠçŽ ã«ãã£ãŠç°ãªããŸãïŒ
- ãµãŒããŒã®ã¡ã¢ãªãšCPUã®æ§èœã
- ããŒãã«æ§é ïŒã€ã³ããã¯ã¹ã®æç¡ãå¶çŽïŒã
- ããŒã¿éãšã¬ã³ãŒãã®ãµã€ãºã
äžè¬çã«ã¯ã100è¡ãã1000è¡çšåºŠãç®å®ã«èª¿æŽããŠãã ãããããã©ãŒãã³ã¹ãã¹ããè¡ããæé©ãªãµã€ãºãèŠã€ããããšãéèŠã§ãã
ãŸãšã
FAQã§ã¯ãMySQLã§ããŒã¿æ¿å ¥ãè¡ãéã«çŽé¢ããããåé¡ãçåã«å¯Ÿããå ·äœçãªè§£æ±ºçãæäŸããŸããããã®æ å ±ãæŽ»çšããããšã§ãæ¿å ¥æäœãããå¹ççãã€å®å šã«è¡ãããšãã§ããã§ãããã
8. ãŸãšã
MySQLã§ã®ããŒã¿æ¿å ¥ã¯ãåºæ¬çãªæäœããé«åºŠãªææ³ãŸã§ãå€ãã®éžæè¢ããããŸããæ¬èšäºã§ã¯ãç¹ã«ãè€æ°è¡æ¿å ¥ãã«çŠç¹ãåœãŠãå¹ççãã€å®çšçãªæ¹æ³ã解説ããŸããã
èšäºã®èŠç¹
- åºæ¬çãªINSERTæã®æ§æ
- åäžè¡ã®æ¿å ¥ã¯MySQLã®åºæ¬æäœã§ãããããŒã¿åãã«ã©ã ãšã®äžèŽãéèŠã§ãã
- è€æ°è¡ã®ããŒã¿ãäžåºŠã«æ¿å ¥ããæ¹æ³
- 1åã®SQLæã§è€æ°è¡ãæ¿å ¥ããããšã§ããããã¯ãŒã¯è² è·ã軜æžããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- 倧éããŒã¿ã®äžæ¬æ¿å ¥
LOAD DATA INFILE
ãæŽ»çšããããšã§ã倧éã®ããŒã¿ãå¹çããæ¿å ¥å¯èœã§ãããã ããã»ãã¥ãªãã£ãèšå®ã®æ³šæãå¿ èŠã§ãã
- ããã©ãŒãã³ã¹æé©åã®ãã€ã³ã
- ãã©ã³ã¶ã¯ã·ã§ã³ãã€ã³ããã¯ã¹ã®ç¡å¹åããããåŠçããµãŒããŒèšå®ã®èª¿æŽãªã©ãæ¿å ¥å¹çãåäžãããããŸããŸãªæ¹æ³ã玹ä»ããŸããã
- ä»ã®ããŒã¿ããŒã¹ãšã®éã
- MySQLã®æ¿å ¥æ¹æ³ã¯PostgreSQLãOracleãšæ¯èŒããŠã·ã³ãã«ã§ãããããããã®ããŒã¿ããŒã¹ã®ç¹æ§ã«åãããææ³ãçè§£ããããšãéèŠã§ãã
- FAQ
- ããããçåããšã©ãŒã®è§£æ±ºçãå ·äœçã«æç€ºããå®éã®äœæ¥ã§åœ¹ç«ã€æ å ±ãæäŸããŸããã
æåŸã«
MySQLã§å¹ççã«ããŒã¿ãæ¿å ¥ããããšã¯ãããŒã¿ããŒã¹ã®éçšã«ãããŠéåžžã«éèŠã§ããæ¬èšäºã®å 容ãå®è·µããããšã§ãããŒã¿æ¿å ¥ã®å¹çåã ãã§ãªããã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹åäžã«ãã€ãªããã§ãããã
次ã®ã¹ããããšããŠã以äžã®ãããªå®è·µãããããããŸãïŒ
- èšäºå ã§ç޹ä»ããSQLæãå®éã«å®è¡ããŠåäœã確èªããã
- èªèº«ã®ãããžã§ã¯ãã«é©ããæ¿å ¥ææ³ãéžã³ãããã©ãŒãã³ã¹æé©åã詊ã¿ãã
- ããã«è©³ããç¥èãåŸããããMySQLå ¬åŒããã¥ã¡ã³ããé¢é£æžç±ãåç §ããã
MySQLã䜿ã£ãããŒã¿æäœãå¹çåããæ¥åããããžã§ã¯ãã®æåã«ã€ãªããŠãã ããã