将数据库转换为 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
将数据从 CSV 文件映射到 HDFS 上的 Hive 表时出错