我现在有以下问题:
我有一个只有 2 列的数据库表:ID ( primary key, auto increment) 和值 ( varchar(100))。
现在我有一个sql文件来用值填充该表。重点是:首先,文本文件只有单个插入,因此插入的每个值都是单个值。一般不会有问题,如果不是大约 1000 万行...
为了让它更有趣,我有 5 个这样的表和 5 个.sql带有插入语句的文件。
现在我尝试按原样运行 sql 文件,即使只有 100k 行,也需要一个小时......所以插入 1000 万个条目大约需要 100 小时......所有表的 x5 大约需要 500 小时,大约 21 天.. 我不想在这里看到任何事情......
现在从我读过的内容来看,如果一个插入语句包含多个要插入的值,速度会快得多......例如:
insert into knownPasswords3 (password)
values ('! -');
insert into knownPasswords3 (password)
values ('! 3');
insert into knownPasswords3 (password)
values ('! 5');
insert into knownPasswords3 (password)
values ('! ?');
insert into knownPasswords3 (password)
values ('! C');
insert into knownPasswords3 (password)
values ('! c');
会成为:
insert into knownPasswords3 (password)
values ('! -','! 3','! 5','! ?','! C''! c');
作为一个例子......从我读过的内容来看,每个插入语句大约 40 个值将是一个相当不错的值......
所以这就是我想要得到的......从一个包含 400 个单语句(例如)的 sql 文件到一个包含 10 个语句的 sql 文件,每个语句有 40 个值。
现在我已经尝试了很多正则表达式和 Notepad++ 中的不同方法作为示例,但我无法真正让它工作......
然后我虽然如果python可能能够以一种优雅的方式做到这一点(或者直接将它插入到数据库中,或者只是转换文本文件)。我认为插入不会有太大帮助,所以现在我正在寻找一种将文件转换为另一个文件的方法,只是它具有提到的单个语句的减少..
我的伪代码类似于:
open file.sql
i = 0;
for each line in file.sql:
if i==40:
i=0
break
else:
remove text "insert into knownPasswords3 (password) values ("
remove text ");"
add text ,
但是,我已经尝试过了,只是无法让这些部件正常工作......
任何人都可以让我走上正确的轨道吗?是否有一个库或某事使这更容易?