将sql查询的结果写入mysql中的文件

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

ls: cannot access asdf: No such file or directory
key.pem
    

要回复问题请先登录注册