Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีนำเข้าไฟล์ข้อความที่มีคำนำหน้าแถว (line prefixes) เข้า MySQL ตาราง

สมมติเรามีคำนำหน้าแถว (line prefix) ในไฟล์ข้อความ ด้วยการใช้ตัวเลือก 'LINES STARTING BY' เราสามารถข้ามคำนำหน้านั้นและนำเข้าข้อมูลที่ถูกต้องเข้า MySQL ตารางได้ สาธิตได้จากตัวอย่าง:

ตัวอย่าง

สมมติเราใช้ 'VALUE' เป็น 'LINE PREFIX' ในไฟล์ข้อความ ดังนี้:

id,     Name,     Country,      Salary
VALUE:105,  Chum*,  Marsh,USA,    11000
106,    Danny*,   Harrison,AUS,   12000

ขณะนำเข้าไฟล์ข้อความนี้เข้า MySQL ตาราง ต้องระบุตัวเลือก 'LINES STARTING BY' ในคิวรี ดังนี้:

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO TABLE employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 1 row affected (0.07 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

ดูว่ามีการนำเข้าได้อะไร:

mysql> SELECT * FROM employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      | 11000  |
+------+----------------+----------+--------+
1 row in set (0.00 sec)

MySQL นำเข้าแค่ 1 เรคคอร์ด เพราะเราใช้คำนำหน้า 'VALUE:' ก่อนบรรทัดแรก จึงข้ามบรรทัดที่ไม่มีคำนำหน้า ตอนนี้ สมมติเพิ่มอีกบรรทัดในไฟล์ข้อความพร้อมคำนำหน้า 'VALUE:' MySQL จะนำเข้าบรรทัดนั้นด้วย:

id,         Name,          Country,  Salary
Value:105,  Chum*,         Marsh,USA, 11000
106,        Danny*,        Harrison, AUS, 12000
Value:107,  Raman*,Kumar,  IND,       25000
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO TABLE employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.07 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

ดูว่านำเข้าอะไร:

mysql> SELECT * FROM employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      | 11000  |
| 107  | Raman,Kumar    | IND      | 25000  |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)