我编写了一个程序,可以INSERT批量处理 100,000 次并显示其进度。
源表包含 2.5GB 的数据:
CREATE TABLE wikt.text (
old_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
old_text MEDIUMBLOB NOT NULL,
old_flags TINYBLOB NOT NULL,
PRIMARY KEY (old_id),
KEY old_id (old_id)
) ENGINE=INNODB
AUTO_INCREMENT=23565544
DEFAULT CHARSET=binary;
CREATE INDEX old_id ON text (old_id);
Run Code Online (Sandbox Code Playgroud)
这是目标表:
CREATE TABLE domains.dictionary_language (
text_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
english TINYINT(1) UNSIGNED NOT NULL,
PRIMARY KEY (text_id),
KEY english (english)
) ENGINE=INNODB
AUTO_INCREMENT=23565544;
Run Code Online (Sandbox Code Playgroud)
这是以 100k 为批次运行的查询:
INSERT INTO domains.dictionary_language
SELECT old_id,
IF(old_text LIKE …Run Code Online (Sandbox Code Playgroud) 我有一个针对没有 GUI 的数据库运行的脚本。这个简单的查询让我看到它的进展:
select
*,
(select count(*) from domains) as count,
(select 456976-count(*) from domains) as remaining
from domains
order by domain desc
limit 0, 1;
Run Code Online (Sandbox Code Playgroud)
使用 MySQL Workbench,如何每隔几秒自动刷新/重新运行此查询?
我试过谷歌搜索,但没有想出任何相关的东西。
旁白:幻数 456,976 是 26^4;它与脚本有关。