我在SQLite Studio中有一个数据库,其中有一个名为“LOCATIONS”的表。此表包含以下列:
我希望用2000x1000矩阵中的每个像素的id和位置填充此数据库(1,0,0; 2,0,1; 3,0,2; ... 2000000,1999,999)。
首先,我在Java中运行以下命令并将输出保存为.txt:
public class matrix {
public static void main(String[] args) {
int c = 1;
for (int x = 0; x < 2000; x++) {
for (int y = 0; y < 1000; y++) {
System.out.print("('" +c+ "','" +x+ "','" +y+ "')\n");
c++;
}
}
}
}
然后我(原谅我缺乏编程专业知识)尝试将2M行直接复制到SQLStudio的SQL编辑器中的插入语句中,但我的计算机无法处理它并且每次都会崩溃程序。
什么是我的问题的最佳解决方案?
答案 0 :(得分:2)
我建议您将location_id (pk)
设为INTEGER PRIMARY KEY AUTOINCREMENT
字段,然后使用这样的CTE而不是生成所有行的值:
with recursive x(i) as(
select 1
union all
select i+1
from x
where i<2000
), y(i) as(
select 1
union all
select i+1
from y
where i<1000
), t as (
select x.i x, y.i y
from x
cross join y
)
insert into LOCATIONS (location_id, location_x,location_y)
select null, x, y
from t
order by x, y;