"Rich Rattanni" <[EMAIL PROTECTED]> writes: Hello Rich,
Thanks for your proposal, but my purpose is to rotate the databases and remove the oldest files to avoid filling my file system, so I can't use the same table as I want to changes files. The solution which is a good compromise for me for the moment is something like this: while(1) { read_informations_from_several_sources(); INSERT(informations); if($count > $max) { /* I want to move all oldest rows in another database */ open_new_database(); attach_old_database_and_fiddle_with_database_handle(); INSERT INTO new_table SELECT * FROM old_table order by rowid desc limit $min; close_old_db() } } with my current values ( max ~100000 and min ~1000), the switch operation takes around 150ms which is acceptable for me. > Self replies.... sorry its kinda lame huh? Could you add a column to > your schema such as "LOG #" or so, and do all your work in the same > table. So if your data max limit is 3 you would have... > > rowid data logNum > 1 x 1 > 2 y 1 > 3 z 1 > 4 a 2 > 5 b 2 > > Just thinking out of my finger tips. > > > > On Sun, Jun 15, 2008 at 10:20 PM, Rich Rattanni <[EMAIL PROTECTED]> wrote: >> I am working with SQLite in an embedded environment. With synchronous >> = full, I can say large inserts are abysmal (of course I need the >> protection that full synchronous offers). Of course, as always what I >> call large may not be what you call large. Keep in mind that sqlite >> will make a journal file equal to roughly the size of the data you >> will be moving. Instead of moving the data to a backup, could you >> create a new table and start dumping data there? You know, in your >> program remember the current table (DataLogX). When it comes time to >> roll over the log .... "CREATE TABLE DataLog(X+1) .....Just one man's >> opinion. >> >> >> On Fri, Jun 13, 2008 at 5:25 AM, Al <[EMAIL PROTECTED]> wrote: >>> Hello, >>> >>> I'm using sqlite to implement a fast logging system in an embbeded system. >>> For >>> mainly space but also performance reason, I need to rotate the databases. >>> >>> The database is queried regularly and I need to keep at least $min rows in >>> it. >>> >>> What I plan, is inside my logging loop, to do something like this. >>> >>> while(1) { >>> read_informations_from_several_sources(); >>> INSERT(informations); >>> >>> if(count > max) { >>> /* I want to move all oldest rows in another database */ >>> BEGIN; >>> INSERT INTO logs_backup >>> SELECT * FROM logs order by rowid limit ($max - $min); >>> >>> DELETE FROM logs WHERE rowid IN (SELECT rowid FROM logs ORDER BY rowid >>> LIMIT ($max - $min)); >>> COMMIT; >>> } >>> } >>> >>> rowid is an autoincremented field. >>> I am not an sql expert, and would like to find the fastest solution to move >>> the >>> oldest rows into another database. Am I doing silly things ? Can it be >>> improved ? >>> >>> Thanks in advance. >>> >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users@sqlite.org >>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>> >> > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- Alain ENOUT, Phone: +33 4 93 00 16 82, Fax : +33 4 93 00 16 61 UDcast, 2455 Route des Dolines, BP 355, F-06906 Sophia Antipolis, France UDcast: IP - Broadcast - Wireless http://www.UDcast.com _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users