2013-05-10 71 views
0

我有一个名为DB demo_db 与下表:如何导出CSV文件中的整个数据库MYSQL?

user 
    Id 
    Name 

history 
    Id 
    userId 
    report 

start_test 
    Id 
    userId 
    score 

final_test 
    Id 
    userId 
    score 

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

我不能这样做:SELECT用户。 ,历史。,start_test。*,final_test。* INTO OUTFILE从用户,历史,start_test,final_test

我做到了使用mysqldump但它不显示数据,因为我想要的。

我正在用PHP做这个。

+0

采取无法导出,在短短一个CSV文件中的所有表数据。一个表格用于一个文件。或者你可以建立一个查询并将结果写入一个文件中并用数据分隔; – Nagasaki 2013-05-10 14:59:59

+0

我不能这样做︰SELECT user。*,history。*,start_test。*,final_test。* INTO OUTFILE FROM user,history,start_test,final_test – antonioj1015 2013-05-10 15:11:41

+0

我不认为INTO OUTFILE将起作用,您可以创建一个在csv文件中查看并转储此视图。你需要在你的SQL查询中加入你的表格 – Nagasaki 2013-05-10 15:17:28

回答

0

如果您在使用phpMyAdmin

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

下面你会发现复选框:Put columns names in the first row。检查在第一行中获取列名称,并在下面获取数据。

+0

我怎样才能在PHP中做到这一点? – antonioj1015 2013-05-10 15:07:28

+0

你不能。 phpMyAdmin是用PHP编写的基于网络的MySQL管理工具。 – 2013-05-10 15:16:24

+0

只有你可以做的事情是,如果你想用它作为一个数组在PHP中,然后做格式为PHP数组和视图输出为文本 – Akaash 2013-05-10 15:19:45

2

没有直接执行此操作的命令,您需要模拟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用于给你一个数字索引数组。

如果你不想输出到一个文件,而是直接从网站上下载到您的计算机,添加以下代码行到脚本的开头:在fwrites

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

更改为回声或打印。

噢,我在输出中添加了一些换行符,因为我确信你不需要一条长长的路线。

+0

“此时做一个”SELECT * FROM $表“并处理数据到文件。“ – antonioj1015 2013-05-10 15:34:09

+0

问题/评论是?你需要关于如何做选择查询和输出它的代码? – 2013-05-10 15:37:01

0
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

相关问题