将查询输出到 csv、codeigniter

Posted

技术标签:

【中文标题】将查询输出到 csv、codeigniter【英文标题】:Output query to csv, codeigniter 【发布时间】:2011-07-22 05:58:58 【问题描述】:

我目前有一份报告,其中提供了用户 ID 号和他们的电子邮件地址,但我想在 CSV 文件中制作此报告,而不是像我目前拥有的表格和行。

这是我的控制器

function View_Email_E()

$data = array();

    if($query = $this->report_model->View_Email_English())
    
        $data['records'] = $query;
    
$data['main_content'] = 'view_all_email_english';
$this->load->view('includes/template', $data);



这是我的模型

    function View_Email_English()


    $query = $this->db->where(array('Dial_Up' => '0', 'Language' => 'English', 'Membership_Status' => 'Active'));
    $query = $this->db->like('Email', '@');
    $query = $this->db->get('Membership');
    return $query->result();

由于某种原因,我的视图没有以代码模式显示,但它是使用这些 sn-p 代码自动生成的表。每一行都从数据库中返回 ID 和电子邮件。

<?php if(isset($records)) : foreach($records as $row) : ?>

如何制作仅包含 ID 和电子邮件字段的 CSV 文件?

谢谢

【问题讨论】:

【参考方案1】:

我认为您可以使用 dbutil 中的 csv_from_result 函数来执行此操作。试试这样的:

$csvContent = $this->dbutil->csv_from_result($query);

if ( ! write_file('./path/to/file.csv', $csvContent)) 
    echo 'Unable to write the file';
 else 
    echo 'File written!';
    

http://codeigniter.com/user_guide/database/utilities.html#csv

【讨论】:

我怎样才能让它自动下载? 我应该把 $csvContent 代码放在哪里?在模型或控制器中? 我得到一个 csv 文件,其中包含每个成员的所有信息,而不仅仅是 ID# 和电子邮件,我怎样才能将其限制为这两个字段? 抱歉,回答了我自己的问题,必须使用选择命令! 记得加载文件助手,$this->load->helper('file');【参考方案2】:

添加

$this->db->select(array('ID','Email'));

到您的 View_Email_English 功能。

【讨论】:

以上是关于将查询输出到 csv、codeigniter的主要内容,如果未能解决你的问题,请参考以下文章

如何将 HiveQL 查询的结果输出到 CSV?

将查询输出到 csv、codeigniter

如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?

SQLite:如何将查询结果保存为 CSV 文件?

使用 Export-CSV 将 sqlplus 查询结果导出到 CSV

将 MySQL 命令行结果的输出格式更改为 CSV