Как я вставляю 1000 раз в один оператор? с SQLITE?

- редактирование - для создания этого более ясным я просто использовал cmd строку (на самом деле язь в этом случае) и требуемый, чтобы сделать быстрое тестирование с поршнем и не испытывал желание делать полноценный prj для быстрого одноразового теста.

Я хочу заполнить эту таблицу 10 000 000 значений, но сначала я хочу только 1 000.

Я попробовал, это в sqlite браузере базы данных, но 3 не вставляется, если я не отбрасываю все после него. Но что еще более важно я не знаю, как иметь цифровое движение от 1 до 1 000.

create table if not exists test1(id integer primary key, val integer);
insert into test1(val) select '3' as num where num between 1 and 1000
5
задан 21 May 2010 в 21:25
поделиться

4 ответа

Хорошо, вот способ сделать это на чистом SQL ...

create table if not exists test1(id integer primary key, val integer);

create trigger test1_ins_trigger after insert on test1
  when new.val < 1000 begin
    insert into test1(val) values(new.val + 1);
  end;

pragma recursive_triggers = 1;

insert into test1(val) values(1);
12
ответ дан 18 December 2019 в 08:27
поделиться

Если вы можете использовать Python:

import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.execute("create table test1 (id integer primary key, val integer);")
L = zip(range(1,1001))
c.executemany("insert into test1 (val) values (?);", L)
c.execute("select min(val), max(val) from test1;").fetchone()
#(1, 1000)
0
ответ дан 18 December 2019 в 08:27
поделиться

Есть ли какие-либо требования, чтобы это был чистый SQLite? Если нет, просто выполните цикл на каком-нибудь языке программирования (php / perl / выберите свой яд) и создайте операторы INSERT в цикле.

Для уникального решения, специфичного для SQLite, вы можете использовать виртуальных таблиц и создать модуль для реализации 1..1000 виртуальных таблиц.

0
ответ дан 18 December 2019 в 08:27
поделиться
CREATE TEMP TABLE Bits (Bit INTEGER PRIMARY KEY);
INSERT INTO Bits VALUES (0);
INSERT INTO Bits VALUES (1);

CREATE TEMP TABLE Nums AS SELECT
     b9.Bit * 512 + b8.Bit * 256 + b7.Bit * 128 + b6.Bit * 64 + b5.Bit * 32 +
     b4.Bit * 16 + b3.Bit * 8 + b2.Bit * 4 + b1.Bit * 2 + b0.Bit
     AS Num
FROM Bits b9, Bits b8, Bits b7, Bits b6, Bits b5,
     Bits b4, Bits b3, Bits b2, Bits b1, Bits b0;

CREATE TABLE Test1 (ID INTEGER PRIMARY KEY, Val INTEGER);
INSERT INTO Test1 SELECT Num, 3 FROM Nums WHERE Num BETWEEN 1 AND 1000;
7
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: