Autor Zpráva
tester
Profil *
Pokud bych chtěl udělat export dat z mysql do sqlite - ne přímo do databáze, ale jako soubor .sql - a mám například dva sloupce, které oba jsou čísla, jaké mám možnosti?

Zatím vím jen o jedné INSERT INTO ... SELECT ... SELECT UNION ALL ...

Přitom SELECT UNION ALL se opakuje pro každý další řádek. To viditelně zvyšuje velikost souboru.
Tak se mi zdá že ukládání čísel takovým způsobem do souboru je dost neefektivní. Proto mě zajímá jestli existuje ještě jiná možnost kromě přímého zápisu do db?
juriad
Profil
INSERT INTO tbl (col1, col2) VALUES
(x1, y1), (x2, y2), (x3, y3), (x4, y4), ...
Možnost opakování závorek s hodnotami je vidět na tom schématu www.sqlite.org/lang_insert.html.

Případně můžeš použít CSV:
stackoverflow.com/a/1045961/4052811
www.sqlite.org/cli.html#section_8
tester
Profil *
juriad:
Není to stejná syntaxe jako u Mysql? juriad

Vyzkoušel jsem a dostal jsem toto:

CREATE TABLE "a" ( "a" INTEGER, "b" INTEGER )

Žádné řádky.

(0.045 s) Upravit, Export

INSERT INTO "a" ("a", "b") VALUES
(0, 1), (1, 2), (3, 4), (6, 5)

Chyba v dotazu: near ",": syntax error

Chyba v dotazu: 2

Platí ta syntaxe pro Sqlite 2? Já právě četl cosi že tato syntaxe nefunguje na starší verze.

stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database/1734067#1734067
Jan Tvrdík
Profil
tester:
A proč nepoužiješ sqllite 3?
tester
Profil *
Tak nic použiju SELECT UNION ALL
pcmanik
Profil
tester:
S SQLite nerobim, ale zaujímalo by ma ako s dá SELECT-om vkladať nové riadky, to je mi novinka.

A nieje jednoduchšie konečne výsť z toho tvojho sveta zastaralých verzií a updatovať? Odpadne ti s tým kopa problémov....
juriad
Profil
pcmanik:
create table t(i int primary key, j int);

insert into t
select 1, 2
union all select 2, 3
union all select 3, 4;

Starší verze uměly klauzulí VALUES vložit jen jeden řádek, proto se to muselo takto obcházet.
web.archive.org/web/20070911175557/http://www.sqlite.org/lang_insert.html

Výhodou jediného dotazu proti mnoha insertům je ten, že je to vše v rámci jedné transakce, indexy se upravují jen jednou a vše se ukládá na disk jen jednou.
www.sqlite.org/faq.html#q19

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: