将数据库转换为 CSV 并将文件保存到服务器上的文件夹

Posted

技术标签:

【中文标题】将数据库转换为 CSV 并将文件保存到服务器上的文件夹【英文标题】:Convert Database to CSV and Save file to folder on server 【发布时间】:2011-08-09 17:59:11 【问题描述】:

我已经成功地将我的数据库导出为 csv 作为可下载文件。但是,我现在需要做的不是创建一个直接下载的 .csv 文件,而是将其保存到服务器上名为“csv”的文件夹中。这是我当前导出的代码。我需要帮助保存到服务器部分。文件夹 (csv) 上的 CHMOD 为 777

    $today = date('Y-m-d'); 

    $select = "SELECT * FROM goldpacks WHERE date = '$today'";

    $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

    $fields = mysql_num_fields ( $export );

    for ( $i = 0; $i < $fields; $i++ )
    
        $header .= mysql_field_name( $export , $i ) . "\t";
    

    while( $row = mysql_fetch_row( $export ) )
    
        $line = '';
        foreach( $row as $value )
                                                    
            if ( ( !isset( $value ) ) || ( $value == "" ) )
           
                $value = "\t";
            
            else
            
                $value = str_replace( '"' , '""' , $value );
                $value = '"' . $value . '"' . "\t";
            
            $line .= $value;
        
        $data .= trim( $line ) . "\n";
    
    $data = str_replace( "\r" , "" , $data );

    if ( $data == "" )
    
        $data = "\n(0) Records Found!\n";                        
    

    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=import.csv");
    print "$header\n$data";

【问题讨论】:

【参考方案1】:

您只需调用file_put_contents()。您已经在$data 中正确格式化了您的 csv,因此写入过程很简单:

// $filename is whatever you need the file to be called
file_put_contents("/path/to/csv/" . $filename, "$header\n$data");

而不是 777 对 csv 文件夹的权限,它应该由运行 Web 服务器的用户拥有,使用 700,或者由 Web 服务器用户拥有的组拥有,使用 770

【讨论】:

以上是关于将数据库转换为 CSV 并将文件保存到服务器上的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用flume将csv文件传输到hdfs,并将它们转换为avro

尝试将桌面上的工作簿的工作表 2 保存为 CSV

将数据从 CSV 文件映射到 HDFS 上的 Hive 表时出错

Linq to CSV:将数据转换为 .CSV 文件并从操作中返回文件,而不在服务器上保存文件

如何将 csv 文件从 colab 实际保存到谷歌驱动器?

怎么把压缩文件rar格式转化成csv格式?