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

ประโยชน์ของอักขระหนีบ (\) ในไฟล์ข้อความขณะนำเข้าข้อมูลไป MySQL

การใช้อักขระหนีบ (\) จะสำคัญมากเมื่อต้องการแทรกเครื่องหมายจุลภาคหรืออักขระอื่นระหว่างค่าของฟิลด์ สาธิตได้จากตัวอย่าง สมมติต้องการนำเข้าข้อมูลจากไฟล์ข้อความ A.txt ที่มีข้อมูลดังนี้ เข้า MySQL ตาราง:

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

ที่นี่ ฟิลด์ name มีสองค่า คือ ชื่อ นามสกุล คั่นด้วยจุลภาค คิวรีต่อไปนี้นำเข้าข้อมูลจาก A.txt เข้า 'employee4_tbl':

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO TABLE employee4_tbl FIELDS TERMINATED BY ',' IGNORE 1 ROWS;
Query OK, 2 rows affected, 4 warnings (0.05 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 4

มีคำเตือน 4 รายการ ดูว่ามีอะไรถูกแทรก:

mysql> SELECT * FROM employee4_tbl;
+------+---------+----------+--------+
| Id   | Name    | Country  | Salary |
+------+---------+----------+--------+
| 105  | Chum    | Marsh    | 0      |
| 106  | Danny   | Harrison | 0      |
+------+---------+----------+--------+
2 rows in set (0.00 sec)

ผลลัพธ์แสดงว่า MySQL ทำนาย 'lastname' ซึ่งเป็นค่าของฟิลด์ 'name' ไปเป็นค่าของฟิลด์ 'Country'

ปัญหานี้แก้ได้โดยวางอักขระหนีบในไฟล์ข้อความ ดังนี้:

id,   Name,   Country,      Salary
105,  Chum\,  Marsh,USA,    11000
106,  Danny\, Harrison,AUS,  12000

นำเข้าไฟล์นี้เข้า MySQL ตาราง:

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO TABLE employee5_tbl FIELDS TERMINATED BY ',' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

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

mysql> SELECT * FROM employee5_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      | 11000  |
| 106  | Danny,Harrison | AUS      | 12000  |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)