我的 Linux EC2 服务器中目前有一个 15 GB 的大型数据库 .db 文件。我知道 SQLite 3 可以使用以下命令直接导出到 .csv 文件:
sqlite3 -header -csv ./home/data.db "select * from datafile;" >> out.csv
但是,我想知道是否有一个选项可以将 .db 文件导出到制表符分隔的文本文件中。我查找了 SQLite 3 的文档,但只找到了对 .csv 文件的引用。有人知道我该怎么做吗?非常感谢!
当然:
sqlite3 -header -separator " " ./home/data.db \
"select * from datafile;" > out.txt
应该这样做。
" "
的内容是制表符。您可以从命令行(在 bash
中)键入 if,方法是在其前面加上 Ctrl-v
。
如果您使用 SQL 脚本,则可以使用
"\t"
:
.headers on
.mode csv
.separator "\t"
select * from datafile
另请参阅手册,第 5 节。另见手册:
8.6.2。导出到 TSV(制表符分隔值)
可以通过在运行查询之前输入“.mode tabs”来导出到纯 TSV,无需任何字段引用。但是,如果输出包含双引号字符,则“.import”命令将无法在制表符模式下正确读取输出。要根据 RFC 4180 引用 TSV,以便可以使用“.import”在选项卡模式下输入它,请首先输入“.mode csv”,然后在运行查询之前输入“.separator”“”。
这是一个快速而肮脏的 shell 脚本,用于将每个表导出到 table.csv,最后导出 dbfile.sql 整个模式
dbname=$1;tables=$(sqlite3 $dbname ".tables");for table in $tables ; do echo $table ; sqlite3 -header -csv -separator "\t" $dbname "select * from $table;">$table.csv;done;sqlite3 $dbname '.schema' > $dbname-schema.sql
复制上述文件中的代码,例如 sqlite2csv.sh 然后运行
sh sqlite2csv.sh dbname.sqlite
您将获得所有表格 csv 和架构文件。 尝试一下,如果有任何问题请给我反馈。