Insert dużej liczby rekordów

0

Macie jakąś koncepcję na wrzucenie do tabeli ok.300tyś. rekordów po 30 pół każdy? baza Postgre i SQLite. Ile mogę wrzucić w jeden Insert? Narzędzie, które będę wykorzystywał to Java JDBC
może ktoś wie Ile wytrzyma preparestatment metoda addBanch()?
Każdy inny pomysł mile widziany :-) dane mam w plikach csv

1

W postgreSQL możesz użyć polecenia COPY.

0

https://kaiv.wordpress.com/2007/07/19/faster-insert-for-multiple-rows/

a jak z programu to ważne jest aby nie robić commit po każdym insercie ale po np. 100-200. Nie czekaj też (jak nie musisz) ze zrobieniem commit na sam koniec bo baza w końcu stanie.

0

W postgresql można wiele rekordów wsadzić jednym poleceniem:

INSERT INTO products (product_no, name, price) VALUES
    (1, 'Cheese', 9.99),
    (2, 'Bread', 1.99),
    (3, 'Milk', 2.99);
0

Polecenia typu "jeden insert, wiele rekordów" są dobre przy ograniczonej liczbie danych (5-1000).
Przy większej liczbie, gdy czas importu jest już zauważalny, warto się pokusić o specjalne narzędzia (np. COPY).
Na DB2 różnica była dramatyczna, na PostgreSQL nie próbowałem.
Na MySQL ładowanie typu "jeden insert" to standard, ale nie wiem czy tam jest jakaś inna opcja.

https://www.postgresql.org/docs/9.6/static/populate.html
https://www.postgresql.org/docs/9.6/static/sql-copy.html

1

W komentarzu się nie dało...
Z tym umieszczaniem pliku na serwerze, to też nie do konca prawda. Można to normalnie z polkeceniauruchomic, tak jak np pgAdmin robi backup:

COPY statusy (id, id_statusu, opis_statusu) FROM stdin;
1	A	Aktywny
2	N	Nieaktywny
\.

1 użytkowników online, w tym zalogowanych: 0, gości: 1