mysql - 在 bash 流中压缩文件时保留文件名

标签 mysql bash shell compression gzip

请求:当我使用流压缩文件时,我想保留原始文件名

我正在使用 gzip -9 压缩带有流的文件(非常大的文件)

gunzip -c ./test.zip | sed 's/;;/;0;/g' | sed 's/,/;/g' | sed 's/xy_ign/xy_ign_latitude;xy_ign_longitude/' | sed 's/xy_ign/xy_geopad_latitude;xy_geopad_longitude/' | gzip -9 >test.gz

当我解压我的文件时

gunzip test.gz

结果文件名为test,而不是test.csv

我知道我可以使用 -N 选项来检索原始文件名

gunzip -N test.gz

但是该文件与 mysql load data infile 一起使用,并且 load data infile 需要文件名才能正常工作

mysql -u user -p -e "LOAD DATA LOCAL INFILE '/tmp/test.gz' INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' ; SHOW WARNINGS" test_db

如何获得包含文件名的 gzip 文件?

最佳答案

默认情况下,gzip 会将原始文件名和文件修改时间存储在 gzip header 中。然而 gzip 需要使用文件名来调用。例如

gzip foo
mv foo.gz bar.gz
gunzip -N bar.gz

将产生foo

关于mysql - 在 bash 流中压缩文件时保留文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511785/

相关文章:

python - 如何避免带有路径变量的 Shell 注入(inject)并等待命令存在?

linux - 如何查看 `ps` 输出以外的进程调度策略

java - 使用字符串 doInBackground(String...args)

sql - JOIN 三张表

bash - 如何计算 bash 中一行的长度,以便排除缩进空格?

linux - 如何使命令的每一行成为另一个命令的参数?

MYSQL WHERE 条件取决于 SELECT 列

php - CSV 到 Mysql 插入日期时间

bash - 如何在 Bash 脚本中使用 Expect

windows - 如何以编程方式分析(和更改)IIS 的配置