在sqlite3中使用变量循环

时间:2015-02-21 06:22:24

标签: database sqlite loops merge

我使用SQLite Expert Personal 3访问和编写sqlite数据库的sql脚本。 我有30个sqlite数据库,它们具有我想要合并的相同结构。 即时通讯使用以下脚本。主数据库的id为自动增量。

attach 'database0001.db3' as toimport;  
insert into [main].[Titles] select * from [toimport].[Titles];
insert into [main].[TitlesData] select * from [toimport].[TitlesData];
DETACH DATABASE toimport;

如果必要的话,我也可以轻松地创建一个带有文件名的数据库。

这可以在循环中完成,其中$ variable是文件名,所以我不必写30次相同的脚本吗?

谢谢你,请原谅noob问题:)

1 个答案:

答案 0 :(得分:0)

是的,可以使用脚本语言将其写入30次,这样您就不必这样做了。 这是使用perl的一个例子,尽管许多语言可以做类似的事情。

在每次循环中,格式说明符%04d使得十进制值$ variable出现在宽度为4的字段中,左边用零填充。

use strict; use warnings;

my $formatString = "attach 'database%04d.db3' as toimport;
insert into [main].[Titles] select * from [toimport].[Titles];
insert into [main].[TitlesData] select * from [toimport].[TitlesData];
DETACH DATABASE toimport;\n";

for (my $variable = 1; $variable <= 30; ++$variable) {
        printf ($formatString, $variable);
}