Roger Binns <[email protected]> writes:
> On 04/11/2010 11:09 AM, Nikolaus Rath wrote:
>> Yes, you remember correctly. Actually that would be a perfect solution.
>> But how do I use it? It seems to me that I need to pass some argument to
>> Shell.command_dump(), because the following just produces an empty file:
>>
>>
>> import apsw
>> ofh = open('dump.txt', 'w')
>> db = apsw.Connection('test.db')
>> s = apsw.Shell(db=db, stdout=ofh)
>> s.command_dump('.dump')
>
> That is asking it to dump the tables named '.', 'd', 'u', 'm' and 'p' :-)
I see. I gues I got confused by the help that refers to the parameter as
'cmd':
| command_dump(self, cmd)
| dump ?TABLE? [TABLE...]: Dumps all or specified tables in SQL text
format
|
| The table name is treated as like pattern so you can use % as
> I'd suggest the more orthodox way of invoking commands which is less likely
> to catch you out like this.
>
> s.process_command(".dump")
That works, thanks! But why is it *that* slow?
[0] vostro:~/tmp$ cat dump.py
import apsw
db = apsw.Connection('test.db')
ofh = open('dump-py.sql', 'w')
s = apsw.Shell(db=db, stdout=ofh)
s.process_command('.dump')
[0] vostro:~/tmp$ cat dump.sh
cat <<EOF | sqlite3 test.db
.output dump.txt
.dump
EOF
[0] vostro:~/tmp$ time python dump.py ; time sh dump.sh
real 2m16.632s
user 2m12.080s
sys 0m3.756s
real 0m13.289s
user 0m9.661s
sys 0m3.600s
Best,
-Nikolaus
--
»Time flies like an arrow, fruit flies like a Banana.«
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users