2013-05-10 1 views
0

У меня есть БД с именем demo_db со следующими таблицами:Как я могу экспортировать в CSV-файл всю базу данных MYSQL?

user 
    Id 
    Name 

history 
    Id 
    userId 
    report 

start_test 
    Id 
    userId 
    score 

final_test 
    Id 
    userId 
    score 

Как я могу экспортировать все таблицы в файл CSV с помощью INTO OUTFILE в MySQL? Поэтому я могу иметь имя столбца и ниже данных, я хочу быть в состоянии добавлять фильтры, если есть способ добавить каждую таблицу в новую вкладку в том же файле .... или если я могу просто отобразить все данные в одной строке для каждого пользователя?

Не могу я сделать что-то вроде: SELECT user. , история., start_test. *, Final_test. * INTO OUTFILE ИЗ пользователя, истории, start_test, final_test

Я сделал это с туздЫшпр, но это не представляет данные, как я хочу.

Я делаю это с PHP.

+0

вы не можете экспортировать все данные таблицы только в одном CSV-файл. Одна таблица для одного файла. Или вы можете построить запрос и записать результат в файл и отделить данные; – Nagasaki

+0

Не могу я сделать что-то вроде: SELECT user. *, History. *, Start_test. *, Final_test. * INTO OUTFILE FROM user, history, start_test, final_test – antonioj1015

+0

Я не думаю, что INTO OUTFILE будет работать, вы можете создать просматривать и выгружать этот вид в файле csv. И вам нужно присоединиться к вашей таблице в вашем SQL-запросе – Nagasaki

ответ

0

Если вы используете PHPMyAdmin

Тогда Перейти Экспорт -> Нажмите на Настраиваемый - display all possible options

ниже вы найдете опцию: Put columns names in the first row. Убедитесь, что для получения имен столбцов в первой строке и ниже вы получите данные.

+0

Как я могу это сделать в PHP? – antonioj1015

+0

Вы не можете. phpMyAdmin - это веб-административный инструмент для MySQL, написанный на PHP. –

+0

Единственное, что вы можете сделать, это то, что вы хотите использовать его в php в качестве массива, затем выполните команду «Форматировать как массив PHP» и «Просмотреть вывод как текст» – Akaash

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 предназначен для создания числового индексированного массива.

Если вы не хотите выводить в файл, а непосредственно загрузить с веб-сайта на свой компьютер, добавьте следующие строки в начале сценария:

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

изменить fwrites к эхо или печать.

О, и я добавил некоторые строки для вывода, поскольку я уверен, что вам не нужна одна большая длинная линия.

+0

«В этот момент сделайте« SELECT * FROM $ table »и обработайте данные на файл." – antonioj1015

+0

И вопрос/комментарий? Вам нужен код о том, как сделать запрос выбора и выводить его? –

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

Смежные вопросы