我正在將大型數據集(60個演出)加載到數據庫中。有些記錄可以跳過,因爲它們包含缺少的值。如何告訴MySQL跳過包含某些(在這種情況下缺少)值的行?例如,我的文件看起來像這樣有條件地忽略行加載數據mysql
Value1, Value2
1,2
3,4
,5
9,10
第三行可以跳過並且不加載。我知道我可以加載所有內容,然後刪除它,但處理60 gig文件需要很長時間,所以我想節省計算能力。
感謝
我正在將大型數據集(60個演出)加載到數據庫中。有些記錄可以跳過,因爲它們包含缺少的值。如何告訴MySQL跳過包含某些(在這種情況下缺少)值的行?例如,我的文件看起來像這樣有條件地忽略行加載數據mysql
Value1, Value2
1,2
3,4
,5
9,10
第三行可以跳過並且不加載。我知道我可以加載所有內容,然後刪除它,但處理60 gig文件需要很長時間,所以我想節省計算能力。
感謝
創建於上檢查,如果特定字段爲空
CREATE TRIGGER before_insert_test
BEFORE INSERT ON test FOR EACH ROW
BEGIN
-- condition to check
IF NEW.Value1 is null THEN
set msg = concat('MyTriggerError: Trying to insert a null value
in trigger_test: ', cast(new.Value1 as char));
signal sqlstate '45000' set message_text = msg;
END IF;
END$$
然後運行您的負載數據命令表插入之前
謝謝你的回答,你能解釋一下觸發器的作用嗎?我不熟悉這個概念。非常感謝您的幫助。 – Alex 2012-02-27 21:32:49
上面的觸發器會在每個插入表之前檢查,如果值爲null,則不插入行。 – 2012-02-28 05:07:18
這似乎不適合我;而不是我的行插入;我發佈了這個問題; http://stackoverflow.com/questions/28595441/mysql-trigger-to-skip-certain-rows-during-load – user1420372 2015-02-18 22:47:51
如果「值1」是一個獨特的領域,那麼你可以用忽略選項發揮。例如:
CREATE TABLE table1(
Value1 INT(11) NOT NULL,
Value2 INT(11) DEFAULT NULL,
PRIMARY KEY (Value1)
);
LOAD DATA INFILE 'file.txt'
IGNORE -- forces to ingore existed records
INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 lines
(@var1, Value2)
SET Value1 = IF(@var1 = 0, 1, @var1)
'IF(@ VAR1 = 0,1,@ VAR1)' 幫助我們改變缺失值 '0' 與存在KEY值 '1',這些記錄將被忽略。
聰明的解決方案!謝謝。 – Alex 2012-02-27 21:32:20
你是如何加載數據觸發? – 2012-02-27 05:27:56
我正在使用load data命令加載 – Alex 2012-02-27 21:30:48