从MySQL到CSV文件的列名称

我有一个数据库中的表,我想用作联系人表导入Outlook。

我想要import的是这样的:

名字| 电子邮件

andy | ds@ds.com < – input姓名和电子邮件

目前我有这样的代码:

(SELECT 'Name', 'Email') union all (select E_Name, Email INTO OUTFILE '/xampp/tmp/Sample.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM email WHERE 1) 

这会创build一个像这样的excel文件:

A | B < – excel列名

名称| 电子邮件

andy | ds@ds.com

我知道如果我拉动信息使用odbc连接它拉信息我需要的方式,但是我想它,所以csv文件已经在这个信息已经创build,从而消除了需要做odbc方法。

我find了解决我的问题。 会打我自己。

 SELECT * INTO OUTFILE '/xampp/tmp/Sample.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' FROM ( SELECT 'Name' AS `E_Name`, 'Email' AS `Email` UNION ALL SELECT `E_Name`, `Email` FROM `email` ) `sub_query` 

在新线之前,我没有做回报。 一旦我join这个CSV可以导入到Outlook没有问题。 感谢所有的帮助。 病假离开这个开放其他任何人都有同样的问题。

* 脸掌 *

我经常发现这种情况。 我知道的最简单的方法是使用sed ,这是Unix的命令行工具。

由于您正在使用Excel,我假设您没有* nix系统(Linux,BSD等)。 所以我build议你安装Cygwin(你可以在这里find它)。

然后,打开一个Cygwin bash shell并在命令提示符下input:

 mysql -h yourHost -u yourUser -pYourPassword yourDatabase -e"select e_name, email from email" | sed 's/\t/,/g' > yourOutput.csv 

让我解释一下每一件事情:

  1. mysql -h yourHost -u yourUser -pYourPassword yourDatabase -e"select..."在MySQL中打开会话,连接到yourDatabase并执行查询( -e标志用于执行查询)。 默认情况下,输出以制表符分隔值的forms定向到控制台。
  2. pipe道字符| 用于将第一个命令的输出redirect到第二个命令,而不是将输出定向到控制台。
  3. sed 's/\t/,/g''用逗号replace每个制表符( \t
  4. > yourOutput.csv将命令的结果redirect到一个名为yourOutput.csv的文件。 你可以指定一个path。

有关sed和redirect的更多信息: http : //lowfatlinux.com


我知道这可能会很麻烦,但是如果你经常这样做的话,这会节省很多时间和头痛(第一次是最困难的,过了一段时间后会变得非常简单)

希望这可以帮助


关于您的评论:

这将需要从MySQL的标题,并在Excel中使用odbc连接的方式将它们标头?

在通俗的术语中:ODBC连接使得客户端程序可以看见表或视图,因此客户端可以使用表或视图中包含的数据。 这意味着,当然,列名是客户端可见的。

我上面提出的解决scheme更像是将select语句的结果“导出”到文件中。

如果你不想安装Cygwin,我对你有一些消息: >redirect操作符在Windows的命令窗口中工作…但我不知道用Windows命令行工具来replace字符。 如果你不介意处理选项卡而不是逗号,这将工作:

 mysql -h yourHost, -u yourUser -pyourPassword yourDatabase -e"select..." > yourOutputFile.txt 

这会将查询结果导出到yourOutputFile.txt文件中,作为制表符分隔值(可由Excel读取)。 正如我在我的评论中所提到的,如果您使用别名作为您的列名称,这些将是将被导出的列标题。

那么从我的理解INSERT INTO您的查询格式是错误的,因为它只写入输出文件的第二个插入。

试试这个(testing)

 SELECT * INTO OUTFILE '/xampp/tmp/Sample.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM ( SELECT 'Name' AS `E_Name`, 'Email' AS `Email` UNION ALL SELECT `E_Name`, `Email` FROM `email` WHERE 1 ) `sub_query` 

注意:不知道为什么你需要WHERE子句,这可能会被取出。 关键是将查询合并到子查询中,然后将其写入文件。