如何将MySQL查询结果存储到本地CSV文件中?

时间:2010-03-05 09:55:41

标签: mysql

如何将MySQL查询结果存储到本地CSV文件中?我无法访问远程计算机。

7 个答案:

答案 0 :(得分:54)

您将不得不使用命令行执行'-e'标志。

$> /usr/local/mysql/bin/mysql -u user -p -h remote.example.com -e "select t1.a,t1.b from db_schema.table1 t1 limit 10;" > hello.txt

将使用查询的输出在当前工作目录中生成本地 hello.txt 文件。

答案 1 :(得分:1)

使用mysql的concat函数

mysql -u <username> -p -h <hostname> -e "select concat(userid,',',surname,',',firstname,',',midname) as user from dbname.tablename;" > user.csv

您可以删除包含列名称的第一行&#34; user&#34;。

答案 2 :(得分:1)

我们可以使用命令行执行'-e'标志和简单的python脚本以csv格式生成结果。

  • 创建一个python文件(名称= tab2csv)并在其中写入以下代码。

     #!/usr/bin/env python
     import csv
     import sys
     tab_in = csv.reader(sys.stdin, dialect=csv.excel_tab)
     comma_out = csv.writer(sys.stdout, dialect=csv.excel)
     for row in tab_in:
       comma_out.writerow(row)
    
  • 通过正确更新mysql凭据运行以下命令

    mysql -u orch -p -h database_ip -e "select * from database_name.table_name  limit 10;" | python tab2csv > outfile.csv
    

结果将存储在outfile.csv中。

答案 3 :(得分:0)

我正面临这个问题,我一直在寻找解决方案的时间:导入到Excel,导入访问,保存为文本文件...

我认为Windows 的最佳解决方案如下:

  • 使用命令insert ... select来创建“result”表。理想的情况是自动创建此结果表的字段,但这在mysql
  • 中是不可能的
  • 创建与数据库的ODBC连接
  • 使用access或excel提取数据,然后以您希望的方式保存或处理

对于Unix / Linux 我认为最好的解决方案可能是使用这个-e选项之前说的tmarthal并通过像awk这样的处理器处理输出以获得正确的格式(CSV,xml,等等) )。

答案 4 :(得分:0)

我还没有机会针对具有困难字符的内容进行测试,但是出色的mycli可能是许多人的解决方案。

命令行

mycli --csv -e "select * from table;" mysql://user@host:port/db  > file.csv

互动模式:

\n \T csv ; \o ~/file.csv ; select * from table1; \P
  1. \n禁用需要按空格才能显示每个页面的寻呼机
  2. \T csv ;-将输出格式设置为csv
  3. \o <filename> ;-将下一个输出追加到文件中
  4. <query> ;
  5. \P重新打开寻呼机

答案 5 :(得分:-7)

运行MySQl查询以从您的应用生成CSV,如下所示

SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv' 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

它将在应用程序的tmp文件夹中创建csv文件。

然后您可以添加逻辑以通过标头发送文件。

确保数据库用户具有写入远程文件系统的权限。

答案 6 :(得分:-18)

您可以尝试:

SELECT a,b,c
FROM table_name
INTO OUTFILE '/tmp/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

我们在这里使用OUTFILE子句将输出存储到CSV文件中。
我们用双引号括起字段来处理其中包含逗号的字段值,我们将字段分隔开来逗号并使用换行符分隔各行。