是否可以将.gzip文件导入sqlite /我可以在导入时跳过某些列吗?

Tg.*_*Tg. 3 sqlite import gzip

我尝试使用.import,但它似乎限制了csv和分隔文件.是否可以导入gzip文件?或者至少从命令行管道?

另外,我可以跳过像mysql"LOAD DATA INFILE"这样的不想要的列吗?

miv*_*ivk 14

如果您不想使用命名管道,您还可以:

zcat $YOURFILE.gz | sqlite3 $YOURDB.sqlite ".import /dev/stdin $TABLENAME"
Run Code Online (Sandbox Code Playgroud)

如果您需要导入之前修改的东西,你可以使用perl(或者awk,sed,等等)的ZCAT和SQLite命令之间.

例如,如果您的文件已将管道字符用作分隔符,并且您只想导入0到3列和5到6列:

zcat $YOURFILE.gz | perl -F'\|' -anle 'print join("|", @F[0..3,5..6])' | sqlite3 $YOURDB.sqlite ".import /dev/stdin $TABLENAME"
Run Code Online (Sandbox Code Playgroud)


Bho*_*pat 9

$ mkfifo tempfile
$ zcat my_records.csv.gz > tempfile
Run Code Online (Sandbox Code Playgroud)

这就像魔法一样!

虽然mkfifo 确实创建了临时文件,但此文件的大小为0字节.运行此命令时$ zcat my_records.csv.gz > tempfile,它将在命令提示符处暂停.这允许你运行

sqlite3> .import tempfile db_table
Run Code Online (Sandbox Code Playgroud)

sqlite3完成导入命名管道,zcat命令也将完成运行.然后,您可以删除命名管道.

$ rm -f tempfile
Run Code Online (Sandbox Code Playgroud)