Come sapere se SQLite è bloccato?


0

Ho creato un file con un elenco di circa 8 milioni di dichiarazioni di importazione da importare in un database SQLite. Ho reindirizzato gli errori a un file. Ogni poche migliaia di righe si verifica un errore che mi consente di conoscere l'avanzamento dell'importazione. A partire da ieri l'importazione era alla linea 5 milioni, ma per quanto ne so non è successo nulla di nuovo. [Il processo di importazione - cat listofsqlstatements.sql| sqlite3 mydb.db 2>errors.txt- è ancora in esecuzione.] Il registro errori non è stato modificato; la dimensione del file del db sembra invariata (usando du database.db); e un - sqlite3 mydb.db "select distinct * from sometable"|wc -lnon mostra alcun cambiamento. Tuttavia, guardando htopvedo che il processo di importazione ha un elevato utilizzo della CPU. Cosa potrebbe succedere? Come potrei determinarlo? Posso verificare quali sono stati gli ultimi dati importati nel DB?

Risposte:


2

Utilizzare strace -pper allegare al catprocesso. Vedi se sta ancora leggendo dal file.

A proposito, se non stai effettuando l' importazione all'interno di una transazione , verrà eseguita diverse centinaia di volte più lentamente di quanto dovrebbe.


Così vero. Ho modificato il codice che genera le dichiarazioni di importazione. Ora, userò solo sqlite3 .import con un file CSV delimitato da |.
Donnied
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.