我在數據庫中有一個表,並且想更新本地文件上已脫機的列。文件本身有兩列從本地文件更新MySQL表
- 其對應於在表中的ID列的ID,和
- 的實際值。
我已經能夠使用
LOAD DATA INFILE 'file.txt' INTO TABLE table
FIELDS TERMINATED BY ','
,創造新行,但我不知道我怎麼能專門以這樣的方式插入值,該文件中的ID列被加入到表中的ID列。有人可以幫助使用SQL語法嗎?
我在數據庫中有一個表,並且想更新本地文件上已脫機的列。文件本身有兩列從本地文件更新MySQL表
我已經能夠使用
LOAD DATA INFILE 'file.txt' INTO TABLE table
FIELDS TERMINATED BY ','
,創造新行,但我不知道我怎麼能專門以這樣的方式插入值,該文件中的ID列被加入到表中的ID列。有人可以幫助使用SQL語法嗎?
我建議你將你的數據加載到臨時表中,然後使用INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
;例如:
CREATE TEMPORARY TABLE temptable (
id INT UNSIGNED NOT NULL,
val INT,
PRIMARY KEY (id)
) ENGINE = MEMORY;
LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO temptable FIELDS TERMINATED BY ',';
INSERT INTO my_table
SELECT id, val FROM temptable
ON DUPLICATE KEY UPDATE val = VALUES(val);
DROP TEMPORARY TABLE temptable;
另一種方式可能是...
既然你已經知道了表名以及有ID和實際值...你可以做的是...直接寫UPDATE語句在一個文件中,像
update mytable set value_col = value where ID_col = ID;
Second Update Statement
Third Update statement
.......
將文件另存爲*.sql
一樣,updatescript.sql
然後直接執行該腳本像
mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql"
它取決於行號, 如果它是在數百個腳本中創建更新列並運行它,但是如果它在大量導入該文件到一個新表中並使用連接更新您的表,然後丟掉表
哦,eggyal已經發布了我在這裏說的話 – PandeyTheDBA