Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bulk insert data operations #10

Open
Mintaka opened this issue Mar 1, 2021 · 7 comments
Open

Bulk insert data operations #10

Mintaka opened this issue Mar 1, 2021 · 7 comments

Comments

@Mintaka
Copy link
Owner

Mintaka commented Mar 1, 2021

Now we store measurement data one row by one.

Does have SQLite ability to store multiple values in one SQL query?
If so, made a code which can do bulk inserts.
Also compare duration of separated insert vs bulk inserts.

@lucijim
Copy link
Collaborator

lucijim commented Mar 9, 2021

pull request #29

@koukalka
Copy link
Collaborator

Našla jsem pár řešení a jedno z nich se jeví nejslibněji:

  1. příkaz connection.executemany (viz. https://www.codementor.io/@charreleramis24/how-to-handle-bulk-data-insertion-sqlite-python-16xwf6ggu7)
  2. druhý nápad - vytvoří se virtuální tabulka se všemi daty a zavolá se insert do tabulky nové , kde select * from virtuální tabulka (viz https://stackoverflow.com/questions/364017/faster-bulk-inserts-in-sqlite3)
  3. uložení jako pandas dataframe (ale viz diskuze minule, s pandas ještě nepracujeme)

@Mintaka
Copy link
Owner Author

Mintaka commented Mar 15, 2021

Testoval jsem generovaní dotazu tak že se nejdřív přidá hlavička
INSERT INTO table VALUES
a pak se přidá řetězec ve kterém jsou poskládané sady hodnot:
(null, val1, val2, val3), (null, val4, val5, val6), (null, val7, val8, val9) ...
a tím se vloží hodně záznamů najednou.

Chtělo by to ještě vyzkoušet, které z těch řešení je nejefektivnější.
Pandas je v našem případě zatím asi kanón na vrabce, ale určitě na něj dojde v samostané/ých lekcích.

@lucijim
Copy link
Collaborator

lucijim commented Mar 15, 2021

Ahoj,

Filipe, já jsem to zkusila předělat na ten způsob, jak popisuješ a funguje to, viz můj pull request.
Ale dělala jsem to před refaktoringem kódu, tak to ještě bude potřeba upravit, kdyžtak se na to večer kouknu.
Pandas je možná teda kanón na vrabce, ale nejefektivnější mi přijde. :) Ale je fakt, že je asi blbost to teď dělat přes pandas, když hodně lidí z kurzu neví,jak funguje, spíš pak možná až proberem pandas, tak ukázat, že to jde přes něj taky.

@Mintaka
Copy link
Owner Author

Mintaka commented Mar 15, 2021

Refaktoring by měl být jednoduchý.

Ve funkci insert_csv2db jsou všechna potřebná data k dispozic.
Samotnou část, kdy se z csv vytahují jednotlivé řádky a skládají se do řetězce by možná bylo dobré dát do samostatné funkce, která by vracela už jeden kompletní řetězec s daty.

To řešení s Pandas s jeho velmi stručným představením by mohlo být na kurzu představeno.

@lucijim
Copy link
Collaborator

lucijim commented Mar 15, 2021

OK, díky, tak já na to večer mrknu.

@Mintaka
Copy link
Owner Author

Mintaka commented Mar 15, 2021

Jasan, uvidíš, jak budeš mít prostor a chuť.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants