For windows, I think the following would work:

sqlite3 %DB% -batch "SELECT TBL_NAME FROM sqlite_master WHERE type=='table'
order by tbl_name;"                   >%temp%\dump.tmp

for /f "usebackq" %%i in (`type %temp%\dump.tmp`) do sqlite3 %DB% -batch
".mode tabs" -batch "SELECT * FROM %%i " >%%i.tsv

delete %temp%\dump.tmp >nul

On Fri, Dec 8, 2017 at 10:19 AM, Luuk <luu...@gmail.com> wrote:

> On 08-12-17 14:52, Luuk wrote:
>
>> On 08-12-17 14:13, Simon Slavin wrote:
>>
>>>
>>> On 8 Dec 2017, at 7:02am, Peng Yu <pengyu...@gmail.com> wrote:
>>>
>>> I'd like to dump all the tables to separate files, one table one file.
>>>> Each file should be in TSV format.
>>>>
>>>> Is there a convenient way to do so in sqlite3?
>>>>
>>>
>>> which you might want to use with
>>>
>>> .mode tabs
>>>
>>> Simon.
>>>
>> On Windows you can use this batchfile:
>> @echo off
>> set DB=somedirectory\yourDBfile.sqlite
>> sqlite3 %DB% -batch ".tables" >c:\temp\dump.tmp
>> for /f "usebackq" %%i in (`type c:\temp\dump.tmp`) do sqlite3 %DB% -batch
>> ".mode tabs" -batch "SELECT * FROM %%i" >%%i.tsv
>>
>> Let /me know if you do not use Windows, this can be rewritten to work on
>> another OS too ;)
>>
>>
>>
> There's a bug in my script (Windows verion only, its solved in the
> linux-version :-):-)!)
>
> when doing this:
> sqlite3 db.sqlite -batch ".tables"
>
> My script 'assumes' the output gives 1 table per line, and now only the
> first table on a line is exported to TSV
>
> in Linux writing scripts is more easy, so this problem can be dealt with:
>
> #!/bin/bash
>
> db=somedirectory/yourDBfile.sqlite
> sqlite3 $db -batch ".tables" | sed -e 's/  */\n/g' | grep -v '^$' | while
> read line
> do
>         echo $line
>         sqlite3 $db -batch ".mode tabs" -batch "SELECT * FROM $line"
> >$line.tsv
> done
>
>
>
> For MacOS you have to replace the sed expression:
> 's/  */\n/g'    (BTW there are 2 spaces before the '*'!!
> with:
> 's/  */\$'\n/g'     (still 2 spaces before the '*' :-)
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to