आपके कोड से, ऐसा प्रतीत होता है कि आपका "अद्वितीय पहचानकर्ता" (इस प्रविष्टि के प्रयोजनों के लिए, कम से कम) समग्र (READING_DATE, READING_TIME, READING_ADDRESS)
है। ।
यदि आप ऐसे UNIQUE
. को परिभाषित करते हैं अपने डेटाबेस में कुंजी, फिर LOAD DATA
IGNORE
. के साथ कीवर्ड को ठीक वही करना चाहिए जिसकी आपको आवश्यकता है:
ALTER TABLE tbl_reading
ADD UNIQUE KEY (READING_DATE, READING_TIME, READING_ADDRESS)
;
LOAD DATA INFILE '/path/to/csv'
IGNORE
INTO TABLE tbl_reading
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES
TERMINATED BY '\r\n'
(@rec_0, @rec_1, @rec_2, @rec_3, @rec_4, @rec_5, @rec_6, @rec_7, @rec_8)
SET
READING_DATE = DATE_FORMAT(STR_TO_DATE(TRIM(@rec_0), '???'), '%Y/%m/%d'),
READING_TIME = DATE_FORMAT(STR_TO_DATE(TRIM(@rec_1), '???'), '%H:%i:%s'),
READING_ADDRESS = TRIM(@rec_2),
CO2_SET_VALUE = TRIM(@rec_3),
CO2_PROCESS_VALUE = TRIM(@rec_4),
TEMP_SET_VALUE = TRIM(@rec_5),
TEMP_PROCESS_VALUE = TRIM(@rec_6),
RH_SET_VALUE = TRIM(@rec_7),
RH_PROCESS_VALUE = TRIM(@rec_8)
;
(कहां '???'
आपके सीएसवी में दिनांक और समय प्रारूपों का प्रतिनिधित्व करने वाले स्ट्रिंग से बदल दिए जाते हैं)।
ध्यान दें कि आपको वास्तव में READING_DATE
स्टोर करना चाहिए और READING_TIME
एक साथ एक DATETIME
. में या TIMESTAMP
कॉलम:
ALTER TABLE tbl_reading
ADD COLUMN READING_DATETIME DATETIME AFTER READING_TIME,
ADD UNIQUE KEY (READING_DATETIME, READING_ADDRESS)
;
UPDATE tbl_reading SET READING_DATETIME = STR_TO_DATE(
CONCAT(READING_DATE, ' ', READING_TIME),
'%Y/%m/%d %H:%i:%s'
);
ALTER TABLE tbl_reading
DROP COLUMN READING_DATE,
DROP COLUMN READING_TIME
;
किस मामले में, SET
LOAD DATA
का खंड इसके बजाय कमांड में शामिल होगा:
READING_DATETIME = STR_TO_DATE(CONCAT(TRIM(@rec_0), ' ', TRIM(@rec_1)), '???')