Bla*_*ere 13 mysql sql into-outfile
我想做以下事情 mysql -uuser -ppass -h remote.host.tld database < script.sql
其中script.sql
包含以下内容
SELECT *
FROM webrecord_wr25mfz_20101011_175524
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
我希望CSV输出指向标准输出.原因是因为使用an运行此查询INTO OUTFILE 'blah.csv'
将保存远程主机上的文件.我希望文件保存在本地主机上.
如果我可以将标准输出重定向到文件,那将是花花公子.
上面的答案似乎没有完全回答原来的问题,我不确定这是否可以,但希望这可以帮助某人:
请参阅如何以 CSV 格式输出 MySQL 查询结果?关于如何做的很多评论sed
。例如,根据原始参数,以下内容可能就足够了:
mysql --batch -u user -h remote.host.tld database --port 3306 -ppass -e "SELECT * FROM webrecord_wr25mfz_20101011_175524;" | sed 's/\t/,/g' 2>&1
Run Code Online (Sandbox Code Playgroud)
这与上面的答案类似,但重定向到stdout
而不是blah.csv
.
但是,(虽然不确定如果您需要保留制表符这是否有效,但有很多方法可以解决这个问题),我使用/sf/answers/178025851/来正确转义双引号和转换为逗号分隔:
mysql --batch -u user -h remote.host.tld database --port 3306 -ppass -e "SELECT * FROM webrecord_wr25mfz_20101011_175524;" | perl -lpe 's/"/\\"/g; s/^|$/"/g; s/\t/","/g' 2>&1
Run Code Online (Sandbox Code Playgroud)
sql
"SELECT * FROM webrecord_wr25mfz_20101011_175524;"
via mysql
(此输出将以制表符分隔)perl -lpe 's/"/\\"/g; s/^|$/"/g; s/\t/","/g'
stdout
通过附加将输出转到2>&1
尝试这个:mysql -uuser -ppass -h remote.host.tld database < script.sql 2> blah.csv
这将重定向 stderr
归档时间: |
|
查看次数: |
6194 次 |
最近记录: |