1

在 Mac 命令行上,

$ sql -u foo -pbar db -B -e "SELECT * FROM t" > output.txt

需要输入内联命令。

如何在文件 foo.sql 中执行 SQL 语句,并且仍然以制表符分隔的形式将结果导出到另一个文件中?

编辑

当我做

mysql -h localhost -u foo -pbar db -B -e "SELECT * FROM t WHERE x='{}' LIMIT 2 INTO OUTFILE '../o.tsv';"

我有错误

ERROR 1045 (28000) at line 1: Access denied for user 'foo'@'localhost' (using password: YES)

但奇怪的是,

mysql -h localhost -u foo -pbar db

给我mysql命令提示符很好。使用是否OUTFILE需要foo具有特殊权限的用户?

mysql> SELECT * FROM user WHERE User='foo'\G
*************************** 1. row ***************************
                 Host: localhost
                 User: foo
             Password: *A5DB2D927D6DF94DA5E1CE4B2AEAAB4D8304EA
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
         Show_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: N
     Repl_client_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
     Create_user_priv: N
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
1 row in set (0.01 sec)
4

3 回答 3

0

做:

sql -u foo -pbar db -B -e `cat foo.sql` > output.txt

工作?

于 2012-07-31T18:51:17.250 回答
0

设置File_priv为true后,它可以工作。

于 2012-07-31T19:18:58.387 回答
-1

使用SELECT [text of query] INTO OUTFILE [filename]. 这是文档。如果格式不完全符合您的要求,请参阅文件中的加载数据语法以了解您可以在文件名之后指定的格式命令。

于 2012-07-31T18:45:27.473 回答