【问题标题】:How can I export into an CSV file a whole database MYSQL?如何将整个数据库 MYSQL 导出到 CSV 文件中?
【发布时间】:2013-05-05 07:26:30
【问题描述】:

我有一个名为 demo_db 的数据库 有以下表格:

user
  Id
  Name

history
  Id
  userId
  report

start_test
  Id
  userId
  score

final_test
  Id
  userId
  score

如何在 MySQL 中使用 INTO OUTFILE 将所有表导出为 CSV 文件?所以我可以有列名和数据下方,我希望能够添加过滤器,如果有办法将每个表添加到同一文件中的新选项卡中......或者如果我可以显示所有每个用户在一行中的数据??

我不能这样做:SELECT user., history., start_test.*, final_test.* INTO OUTFILE FROM user, history, start_test, final_test

我是用 mysqldump 做的,但它没有按我想要的方式呈现数据。

我正在用 PHP 做这个。

【问题讨论】:

  • 您不能将所有表格数据都导出到一个 csv 文件中。一个文件一个表。或者,您可以构建查询并将结果写入文件并用 ; 分隔数据
  • 我不能这样做:SELECT user.*, history.*, start_test.*, final_test.* INTO OUTFILE FROM user, history, start_test, final_test
  • 我认为 INTO OUTFILE 不起作用,您可以创建一个视图并将该视图转储到 csv 文件中。你需要在你的 SQL 查询中加入你的表

标签: php mysql


【解决方案1】:

没有直接执行此操作的命令,您需要模拟 mysqldump 的行为并以您想要的方式输出 CSV。

$FILE = fopen("output.csv", "w");
mysql_connect($server, $login, $password);
$res = mysql_query("SHOW TABLES FROM $db");
$tables = array();
while($row = mysql_fetch_array($res, MYSQL_NUM)) {
    $tables[] = "$row[0]";
}
foreach($tables as $table) {
    $columns = array();
    $res = mysql_query("SHOW COLUMNS FROM $table");
    while($row = mysql_fetch_array($res, MYSQL_NUM)) {
        $columns[] = "$row[0]";
    }
    fwrite($FILE, implode(",", $columns); fwrite("\n");
    $resTable = mysql_query("SELECT * FROM $table");
    while($row = mysql_fetch_array($resTable, MYSQL_NUM)) {
        fwrite($FILE, implode(",", $row)); fwrite("\n");
    }
}

MYSQL_NUM 用于为您提供数字索引数组。

如果您不想输出到文件,而是直接从网站下载到您的计算机,请将以下行添加到脚本的开头:

header('Content-Type: text/csv; name="filename.csv"');
header('Content-Disposition: attachment; filename="filename.csv"');

将 fwrite 更改为 echo 或 print。

哦,我在输出中添加了一些换行符,因为我确定您不会想要一条大长行。

【讨论】:

  • "此时执行“SELECT * FROM $table”并将数据处理到文件中。"
  • 问题/评论是?您需要有关如何进行选择查询并输出的代码吗?
【解决方案2】:

如果你使用的是 phpmyadmin

然后转到导出 -> 点击自定义 - display all possible options

您会在下面找到复选框:Put columns names in the first row。检查以获取第一行中的列名,然后您将获得数据。

【讨论】:

  • 你不能。 phpMyAdmin 是一个基于 Web 的 MySQL 管理工具,用 PHP 编写。
  • 你唯一能做的就是如果你想在 php 中将它作为一个数组使用,然后将其格式化为 PHP 数组并以文本形式查看输出
【解决方案3】:
CREATE VIEW MY_VIEW
AS
SELECT user.*, history.*, start_test.*, final_test.*
FROM
user, history, start_test, final_test
WHERE user.id = history.userId
AND user.id = start.userId
AND user.id = final.userId

在phpmyadmin中使用导出工具转储视图的内容

【讨论】:

    【解决方案4】:

    这个sn-p取自http://dev.mysql.com/doc/refman/5.6/en/select-into.html

    SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
      FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY '\n'
      FROM test_table;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 2020-11-05
      • 2012-01-22
      • 2013-03-19
      • 2019-02-21
      相关资源
      最近更新 更多