For batch loading via script, you should limit the number of values per statement (SQLite compiles each statement into memory) and per transaction (SQLite needs to write to disk after a certain number of pages are modified).
For batch loading via program, you can prepare the insert statement for 1 row once and bind the values for ech row to be inserted. -----Ursprüngliche Nachricht----- Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im Auftrag von Grincheux Gesendet: Sonntag, 01. September 2019 08:28 An: sqlite-users@mailinglists.sqlite.org Betreff: [EXTERNAL] [sqlite] INSERT vs BEGIN What is the best ? INSERT INTO artists (name) VALUES ("Gene Vincent") ("John Lennon") ("Ringo Starr") ("Paul McCartney") . . . ("Moi _ Me"); I want to insert 1 000 000 records. The other manner tot do is creating a transaction with one insert command by line. My question is what is the best thing to do ? Or having a transaction for the first sample? One must know that I am obliged to use "BEGIN DEFERRED TRANSACTION" because others threads needs to access to tables. Please help me. Grincheux -- Sent from: http://sqlite.1065341.n5.nabble.com/ _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___________________________________________ Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0 May be privileged. May be confidential. Please delete if not the addressee. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users