我正在尝试使用mysql将查询结果写入文件.我在一些地方看到了关于outfile构造的一些信息,但似乎这只是将文件写入运行MySQL的机器上(在这种情况下是远程机器,即数据库不在我的本地机器上).
或者,我也尝试运行查询并从mysql工作台结果窗口中获取(复制/粘贴)结果.这适用于一些较小的数据集,但最大的数据集似乎太大,导致内存不足/错误/崩溃.
任何有关此事的帮助将不胜感激.
ero*_*dna 48
您可以尝试从本地cli执行查询,并将输出重定向到本地文件目标;
mysql -user -pass -e"select cols from table where cols not null" > /tmp/output
Run Code Online (Sandbox Code Playgroud)
dol*_*phy 14
这取决于您用于与数据库交互的SQL客户端.例如,您可以将mysql命令行界面与"tee"运算符一起使用以输出到本地文件:
http://dev.mysql.com/doc/refman/5.1/en/mysql-commands.html
tee [file_name], \T [file_name]
Run Code Online (Sandbox Code Playgroud)
在执行SQL之前执行上面的命令,查询结果将输出到文件.
特别是对于MySQL Workbench,这是一篇关于对文本输出执行查询的文章.虽然我没有看到任何文档,但有迹象表明在Query下也应该有一个"Export"选项,尽管这几乎肯定是依赖于版本的.
如果要在文件中编写MySQL查询结果,可以试试这个.
此示例将MySQL查询结果写入csv具有逗号分隔格式的文件中
SELECT id,name,email FROM customers
INTO OUTFILE '/tmp/customers.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
如果您在命令行上运行 mysql 查询。在这里,我假设您在一个文本文件中有查询列表,并且您希望在另一个文本文件中输出。然后你可以使用这个。[ test_2 是数据库名称]
命令 1
mysql -vv -u root -p test_2 < query.txt > /root/results.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
其中 -vv 用于详细输出。
如果你使用上面的语句作为
命令 2
mysql -vv -u root -p test_2 < query.txt 2>&1 > /root/results.txt
Run Code Online (Sandbox Code Playgroud)
它将 STDERR 重定向到正常位置(即在终端上)并将 STDOUT 重定向到输出文件,在我的情况下是 results.txt
第一个命令执行 query.txt 直到遇到错误并停止。
这就是重定向的工作原理。你可以试试
#ls key.pem asdf > /tmp/output_1 2>&1 /tmp/output_2
Run Code Online (Sandbox Code Playgroud)
这里 key.pm 文件存在而 asdf 不存在。因此,当您对文件进行分类时,您会得到以下信息
# cat /tmp/output_1
key.pem
#cat /tmp/output_2
ls: cannot access asdf: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是如果你用这个修改前面的语句
ls key.pem asdf > /tmp/output_1 > /tmp/output_2 2>&1
Run Code Online (Sandbox Code Playgroud)
然后你在 output_2 中得到错误和输出
cat /tmp/output_2
ls: cannot access asdf: No such file or directory
key.pem
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64279 次 |
| 最近记录: |