QUAN SÁT # 1
Bạn không nên làm REPLACE
bởi vì nó là một DELETE
cơ học và INSERT
.
Là Tài liệu MySQL nói về REPLACE
Đoạn 2
Đoạn 5
Việc sử dụng REPLACE sẽ loại bỏ các giá trị đã thiết lập cho TEST_ID không thể tự động được sử dụng lại.
QUAN SÁT # 2
Bố cục bảng sẽ không hỗ trợ bẫy các khóa trùng lặp
Nếu tên là duy nhất, bảng phải được sắp xếp như thế này
BỐ TRÍ # 1
CREATE TABLE `oxygen_domain`.`TEST` (
`TEST_ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) NOT NULL,
`VALUE` varchar(255) DEFAULT NULL,
PRIMARY KEY (`TEST_ID`),
KEY (`NAME`)
)
Nếu một tên cho phép nhiều giá trị, bảng phải được sắp xếp như thế này
BỐ TRÍ # 2
CREATE TABLE `oxygen_domain`.`TEST` (
`TEST_ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) NOT NULL,
`VALUE` varchar(255) DEFAULT NULL,
PRIMARY KEY (`TEST_ID`),
KEY (`NAME`,`VALUE`)
)
GIẢI PHÁP ĐƯỢC ĐỀ XUẤT
Sử dụng bảng tạm thời để nắm bắt mọi thứ. Sau đó, thực hiện một INSERT lớn từ bảng tạm thời dựa trên bố cục
BỐ TRÍ # 1
Thay thế VALUE
cho một NAME
trùng lặp
USE oxygen_domain
DROP TABLE IF EXISTS `TESTLOAD`;
CREATE TABLE `TESTLOAD` SELECT NAME,VALUE FROM TEST WHERE 1=2;
LOAD DATA LOCAL INFILE 'C:/testData.txt'
INTO TABLE `TESTLOAD`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(NAME, VALUE);
INSERT INTO `TEST` (NAME, VALUE)
SELECT NAME, VALUE FROM `TESTLOAD`
ON DUPLICATE KEY UPDATE VALUE = VALUES(VALUE);
DROP TABLE `TESTLOAD`;
BỐ TRÍ # 2
Bỏ qua (NAME,VALUE)
hàng
USE oxygen_domain
DROP TABLE IF EXISTS `TESTLOAD`;
CREATE TABLE `TESTLOAD` SELECT NAME,VALUE FROM TEST WHERE 1=2;
LOAD DATA LOCAL INFILE 'C:/testData.txt'
INTO TABLE `TESTLOAD`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(NAME, VALUE);
INSERT IGNORE INTO `TEST` (NAME, VALUE)
SELECT NAME, VALUE FROM `TESTLOAD`;
DROP TABLE `TESTLOAD`;
Cập nhật
nếu chúng ta cần tránh việc tạo và thả bảng mỗi lần. chúng tôi có thể TRUNCATE TRUNCATE bảng trước hoặc sau khi sử dụng câu lệnh INSERT ... INTO. Do đó, chúng ta không phải tạo bảng vào lần sau.