0
我有一个包含500-5000行的文件,我想将它们保存到我的数据库中。 这里的困难是,我也需要更新旧数据 - 不仅是插入。将数据从文件写入数据库并更新旧数据
所以我尝试了不同的方式:每使用ON DUPLICATE KEY UPDATE
线
- 线(很慢,但适合我的需要)
- 写100线共同使用一个简单的数组缓冲区(快,但覆盖,太 - 或失败哆来重复键)
LOAD DATA INFILE
(非常快,但覆盖/忽略一切)
我遇到了麻烦,写500线到d atabase使用第一种方法。整个过程需要〜25-30秒,这是很长的路要走。其他两种方法都很快(只有1-2秒),但会覆盖我需要更新的旧数据。
该更新包含计数器的简单递增和插入新的时间戳。 所以第一种方法的查询看起来是这样的:
INSERT INTO `latest`
(`hash`,`first_try`,`last_try`, `count_tries`, `sender`)
VALUES
(:hash, :first, :last, 1, :sender)
ON DUPLICATE KEY UPDATE
`count_tries` = `count_tries` + 1,
`last_try` = :last2
我不知道有可能做到这一点与100个插入,太(这是我在我的seccond方法试过)。
您是否知道有任何可能加快此行每行查询或使用带有多个插入的ON DUBLICATE KEY
?
其他任何有相同结果的方法也很好!
这就是天才。我会立即尝试,看看它是如何工作的! – Fuzzyma
Aaaand第一个问题:我需要知道如何用所选行的last-try-col的值替换':last2' – Fuzzyma
用此更新了答案,但找不到那在MySQL文档中? – Barmar