write results of sql query to a file in mysql

前端 未结 5 981
心在旅途
心在旅途 2021-02-01 01:44

I\'m trying to write the results of a query to a file using mysql. I\'ve seen some information on the outfile construct in a few places but it seems that this only writes the fi

相关标签:
5条回答
  • 2021-02-01 01:59

    This is dependent on the SQL client you're using to interact with the database. For example, you could use the mysql command line interface in conjunction with the "tee" operator to output to a local file:

    http://dev.mysql.com/doc/refman/5.1/en/mysql-commands.html

    tee [file_name], \T [file_name] 
    

    Execute the command above before executing the SQL and the result of the query will be output to the file.

    Specifically for MySQL Workbench, here's an article on Execute Query to Text Output. Although I don't see any documentation, there are indications that there should be also be an "Export" option under Query, though that is almost certainly version dependent.

    0 讨论(0)
  • 2021-02-01 01:59

    You could try this, if you want to write MySQL query result in a file.

    This example write the MySQL query result into a csv file with comma separated format

    SELECT id,name,email FROM customers
    INTO OUTFILE '/tmp/customers.csv'
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    
    0 讨论(0)
  • 2021-02-01 02:12

    If you are running mysql queries on the command line. Here I suppose you have the list of queries in a text file and you want the output in another text file. Then you can use this. [ test_2 is the database name ]

    COMMAND 1

    mysql -vv -u root -p test_2  < query.txt >  /root/results.txt 2>&1
    

    Where -vv is for the verbose output.

    If you use the above statement as

    COMMAND 2

    mysql -vv -u root -p test_2  < query.txt  2>&1 >  /root/results.txt
    

    It will redirect STDERR to normal location (i.e on the terminal) and STDOUT to the output file which in my case is results.txt

    The first command executes the query.txt until is faces an error and stops there.

    That's how the redirection works. You can try

    #ls key.pem asdf > /tmp/output_1 2>&1 /tmp/output_2
    

    Here key.pm file exists and asdf doesn't exists. So when you cat the files you get the following

    # cat /tmp/output_1
    key.pem
    #cat /tmp/output_2
    ls: cannot access asdf: No such file or directory
    

    But if you modify the previous statement with this

    ls key.pem asdf > /tmp/output_1 > /tmp/output_2 2>&1
    

    Then you get the both error and output in output_2

    cat /tmp/output_2
    
    ls: cannot access asdf: No such file or directory
    key.pem
    
    0 讨论(0)
  • 2021-02-01 02:17

    You could try executing the query from the your local cli and redirect the output to a local file destination;

    mysql -user -pass -e"select cols from table where cols not null" > /tmp/output
    
    0 讨论(0)
  • 2021-02-01 02:18

    mysql -v -u -c root -p < /media/sf_Share/Solution2.sql 2>&1 > /media/sf_Share/results.txt This worked for me. Since I wanted the comments in my script also to be reflected in the report I added a flag -c

    0 讨论(0)
提交回复
热议问题