Roger, I tried building your APSW wrapper. It built fine, but running "python setup.py test" failed:
ERROR: Verify VFS functionality ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/cwolf/src/apsw-3.6.23.1-r1/tests.py", line 3526, in testVFS vfs=ObfuscatedVFS() File "/Users/cwolf/src/apsw-3.6.23.1-r1/tests.py", line 3521, in __init__ apsw.VFS.__init__(self, self.vfsname, self.basevfs) ValueError: Base vfs implements version 2 of vfs spec, but apsw only supports version 1 I am building apsw-3.6.23.1-r1 against sqlite3-3.7.3 (amalgamation pulled down via fetch) on MacOS 10.5. Does this mean I won't be able to do virtual table from Python? Thanks, -Chris Roger Binns wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 11/19/2010 05:52 AM, Andreas Mucha wrote: > >> i have to copy data from some database into an SQLite database. >> The fasted way for me would be to copy simply all tables. >> To do so i have to disable all SQLite - constraints, copy data >> and finally enable the constraints again. >> >> How can this be done ? >> > > Disabling normal constraints doesn't make any sense. For example if you > have a 'not null' constraint then disabling while loading would allow null > values in the data. > > Foreign keys can be disabled with "PRAGMA foreign_keys=OFF;" and you would > have to do so if you had any. > > There are basically two ways of getting at the data. One would be to > implement virtual tables where the backend talks to your existing database > system. Copies can then be done 'insert into ... select ... from ...' or > 'create table ... as select ... from ...'. This approach would also let you > only copy some of the data into SQLite while letting the rest remain in your > existing database system and you could transparently use both at the same > time. > > The second approach is to create a dump - a text file with raw SQL > statements in it. This is easy to develop as you keep reading the SQL text > until you are happy with it. That text is also a good way of doing backups, > comparisons between databases etc. The SQLite shell includes a .dump > command so you can get some idea of what they should look like. If you are > just doing this copy data process once then you'll do great. If you will be > repeating the process many times then you'll need to make your dump more > robust. > > Here is what my dump code outputs when dumping a SQLite database to give you > an idea: > > - - Disables foreign keys if they are used (this must be done outside a > transaction) > - - "BEGIN TRANSACTION" > > For each table: > - - "DROP TABLE IF EXISTS name" > - - "CREATE TABLE name ..." > - - INSERT for each row data > - - Creates any indices > - - Creates any triggers > > - - Creates any views last as they could involve multiple tables > - - Populates the sqlite_sequence table if any tables have autoincrement > primary keys > - - Runs analyze for any tables that had that before > > - - "COMMIT TRANSACTION" > - - Enable foreign keys > > If you are happy with Python as a language then I'll toot the benefits of my > APSW wrapper around SQLite. You can very easily implement virtual tables. > It also has a builtin shell that produces nicer dumps than the SQLite shell > (eg there are comments in it) and you can easily add your own commands if > you want to provide a more interactive experience doing the data importing. > > http://apidoc.apsw.googlecode.com/hg/vtable.html > http://apidoc.apsw.googlecode.com/hg/shell.html > > Roger > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iEYEARECAAYFAkzn6U0ACgkQmOOfHg372QStPQCeLzOanb7LHlqLtBO8qV33+3j/ > Xt4An0SKbgdGWqJ43FUr8B09V3XP8JK6 > =AZUr > -----END PGP SIGNATURE----- > _______________________________________________ > 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