如何将数据库表头信息转换为CSV文件

时间:2010-03-29 15:39:34

标签: php mysql csv

我正在尝试连接到数据库并获取表的当前状态并将该信息更新为csv文件,使用下面提到的代码段,能够将数据信息获取到csv文件但是无法获取头信息从数据库表到csv文件。

所以我的问题是如何将数据库表格标题信息转换为CSV文件?

$config['database'] = 'sakila';
$config['host'] = 'localhost';
$config['username'] = 'root';
$config['password'] = '';

$d = new PDO('mysql:dbname='.$config['database'].';host='.$config['host'], $config['username'], $config['password']);
$query = "SELECT * FROM actor";
$stmt = $d->prepare($query);

// Execute the statement
$stmt->execute();

var_dump($stmt->fetch(PDO::FETCH_ASSOC));

$data = fopen('file.csv', 'w');

while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    echo "Hi";
    // Export every row to a file
    fputcsv($data, $row);
}

标题信息含义:

Vehicle     Build   Model
 car        2009    Toyota
 jeep       2007    Mahindra

因此,此标题信息将为 Vehicle Build Model

任何指导都将受到高度赞赏。

4 个答案:

答案 0 :(得分:12)

只需从数组$ row获取密钥:array_keys()。现在你拥有了所有的列名,你可以把它们放在你的csv文件中。

=======编辑=======

<?php

$header = array();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    if(empty($header)){ // do it only once!
      $header = array_keys($row); // get the columnnames
      fputcsv($data, $header); // put them in csv
    }

    echo "Hi";
    // Export every row to a file
    fputcsv($data, $row);
}
?>

答案 1 :(得分:2)

使用SHOW COLUMNS FROM将为您提供列名称。然后,您可以用它们写下CSV的第一行:

// Do this before adding the rows from the database
$query = "SHOW COLUMNS FROM some_table";
$stmt = $d->prepare($query);
$stmt->execute();
$columns = '';
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $columns .= $row['Field'] . ',';
}
$columns = substr($columns, 0, -1);
fputcsv($data, $columns);

答案 2 :(得分:1)

使用mysqldump

mysqldump -u user -p --fields-terminated-by=',' --tab=/tmp mydatabase mytable

上面的命令将在/ tmp中创建2个文件。 mytable.sql和mytable.txt。 sql文件将包含表创建模式,txt文件将包含mytable表的记录,其中的字段用逗号分隔。

答案 3 :(得分:0)

您已经在PDO::FETCH_ASSOC中拥有它:返回按结果集中返回的列名索引的数组

编辑: 获取和写入列名称的一种方法是(将它放在你的lopp之前)

fputcsv($data, array_keys($stmt->fetch(PDO::FETCH_ASSOC)));

特别阅读php arrays和关联数组以及数组上的函数(例如array_keys)。特定问题的答案不能取代对数组等基本概念的理解。