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)
$ 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)
| 归档时间: |
|
| 查看次数: |
4106 次 |
| 最近记录: |