【问题标题】:How to export data to csv in mysql without the header?如何在没有标题的情况下将数据导出到mysql中的csv?
【发布时间】:2018-03-03 13:01:44
【问题描述】:

MySQL 具有将数据导出到 CSV 文件的功能,并带有以下语句

SELECT 
    *
FROM
    person
INTO OUTFILE 'person.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ',' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

但是默认情况下它的列名是CSV header,那么如何删除这个语句中的header呢?

我查看了 mysql 参考资料,但似乎没有这样的信息。

【问题讨论】:

  • 我认为没有办法自动完成,您必须在之后编辑文件,或者用客户端语言编写代码才能做到这一点。
  • 顺便说一句,使用select * 执行此操作可能不是一个好主意,以防您更改表中列的顺序。在选择列表中使用明确的列名。
  • 对于一个非常大的 csv 文件,~1GB,真的很难打开和编辑它。
  • tail -n +2 file.csv > filewithouthead.csv
  • 你可以使用mysql --skip-column-names

标签: mysql


【解决方案1】:

这篇文章提供了2个选项:How can I suppress column header output for a single SQL statement?)

1 : 使用 -N 标志调用 mysql 将跳过所有列标题

2 : 假的

select column1 as '', column2 as '' from some_table;

【讨论】:

    【解决方案2】:

    完成csv文件后,似乎对于巨大的记录,大的csv文件没有header,所以如果要添加header,如下:

    一些用户询问是否在“INTO OUTFILE”语法中包含标题,即列名或变量名。

    一种方法是在 mysql 调用中使用“--column-names”选项:

    mysql --column-names -e 'SELECT * FROM mysql.user' > test.dat

    (这会创建一个制表符分隔的文件 test.dat,第一行是列名,后面是查询结果。)

    【讨论】:

      【解决方案3】:
      SELECT 
          *
      FROM
          person
      INTO OUTFILE 'person.csv' 
      FIELDS ENCLOSED BY '"' 
      TERMINATED BY ',' 
      ESCAPED BY '"' 
      LINES TERMINATED BY '\r\n';
      
      change FIELDS ENCLOSED BY '"' line
      with OPTIONALLY ENCLOSED BY '"'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 2012-11-13
        • 2017-05-16
        • 2019-05-03
        • 1970-01-01
        • 2016-10-30
        相关资源
        最近更新 更多