Php MongoDB写一个CSV文件

时间:2014-09-04 12:56:13

标签: php mongodb

我搜索了互联网,但没有得到任何具体细节。

环境为Windows 8WAMPMONGODB

我正在尝试设计一个网页,其中有4个字段:Name,Contact,Device,Email.用户点击submit按钮后,数据会插入MongoDb。这一切都很好。

当我尝试write the inserted data in the csv file时,问题就开始了,因为这是要求。我已经尝试了MongoDB Export command in the cmd,但它运行正常,但尝试使用exec function in the php script调用相同内容证明是徒劳的。

我也试过这个,通过存储command in a .bat文件,然后使用php的exec函数调用.bat文件,仍然没有效果

<?php
echo '<pre>';

// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
exec("c:\WINDOWS\system32\cmd.exe /c START C:\wamp\bin\mongodb\mongodb-win32-x86_64-2008plus-2.4.3\conf\export.bat");

?>

我已在我的WAMP服务器中启用了与桌面的checbox交互。

我不需要任何与编码有关的具体帮助,我需要的是如何继续前进的一些方向,因为我知道我遗漏了一些东西。此外,我重申,在互联网上没有任何具体内容,因此,发布了这个问题。

请告诉我如何实现这一目标。

感谢所有人

3 个答案:

答案 0 :(得分:3)

以下可能有效

header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');

$database   = "DATABASE";
$colName    = "COLLECTION";
$connection = new MongoClient();
$collection = $connection->$colName->$database;

$cursor     = $collection->find();
foreach($cursor as $cur)
   echo '"'.$cur['field_1'].'","'.$cur['field_2']."\"\n";

答案 1 :(得分:1)

此代码会将您选择的数据库转储到json文件

$mongoExport = 'c:\mongodb\mongoexport'; //full path to mongoexport binary
$database = 'test';
$collection = 'foo';
$file = "c:\\temp\\foo.json"

exec(sprintf("%s -d %s -c %s -o %s",
    $mongoExport,
    $database,
    $collection,
    $file
));

这是使用纯PHP,肯定会更快的mongoexport选项,大集合:

$database = 'test';
$collection = 'foo';

$m = new MongoClient();
$col = $m->selectDB($database)->$collection;

$json = json_encode(iterator_to_array($col->find()));

答案 2 :(得分:0)

set_time_limit(0);
ob_start();
error_reporting(E_ALL);
ini_set("display_errors",1);

$conn = new MongoClient("mongodb://Hostname:27017", array("replicaSet" => "rs0"));

if(!$conn){
    die("Unable to connect with mongodb");
}

$db = $conn-><DB NAME>; // DB name
$col1 = $db-><colname>;
$col2 = $db-><colname>; // collection name which u want .
$filterCountry = array("status"=>"1"); // where query
$records = $col1->find($filterCountry);


$fp= fopen('exampleTest11.csv', 'w'); // open csv file in which u want write data.

$headings[] = "Code";   
$headings[] = "Status" ; 
$headings[] = "EMP CODE";

fputcsv($fp, $headings);      // PUT Headings .
$cnt =0;     
foreach($records as $val)   {

    $csvarr = array();
    $csvarr['code']= $val['code'];  // fetch data from database.
    $csvarr['Status']= $val['status'];
    $csvarr['emp_code']= $val['emp_code'];

    fputcsv($fp, $csvarr);
    $cnt++;
}


echo "Completed Successfully..".$cnt;