使用从自定义脚本派生的值填充大型SQLite数据库

时间:2017-10-09 11:47:22

标签: database sqlite

我在SQLite Studio中有一个数据库,其中有一个名为“LOCATIONS”的表。此表包含以下列:

  • location_id(pk)
  • location_x
  • location_y

我希望用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编辑器中的插入语句中,但我的计算机无法处理它并且每次都会崩溃程序。

什么是我的问题的最佳解决方案?

1 个答案:

答案 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;

SQL Fiddle Demo