2017-09-08 4 views
1


コード例:PHP MongoDB Driver経由でmongodbからmysqlにデータをインポートするにはどうすればよいですか?次のようにPHP MongoDBのドライバのドキュメントの例(<a href="http://php.net/manual/en/mongodb-driver-cursor.toarray.php" rel="nofollow noreferrer">http://php.net/manual/en/mongodb-driver-cursor.toarray.php</a>)があり

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 

$bulk = new MongoDB\Driver\BulkWrite; 
$bulk->insert(['x' => 1]); 
$bulk->insert(['x' => 2]); 
$bulk->insert(['x' => 3]); 
$manager->executeBulkWrite('db.collection', $bulk); 

$query = new MongoDB\Driver\Query([]); 
$cursor = $manager->executeQuery('db.collection', $query); 

var_dump($cursor->toArray()); 

質問:私は、MySQLへ$cursorを挿入したい

は、どのような私がすべきそれにする? toArray()はそれを配列に変更できますが、配列の要素はBSONDocumentです。これらはmysqlを挿入することはできません。

答えて

1

。このためにPDO準備文を使用して、それぞれのBSONからの値で実行することができます。

$pdoStmt = $pdo->prepare("INSERT INTO MyTable SET x = :x"); 

foreach ($cursor->toArray() as $bson) { 
    $data = get_object_vars($bson); 
    unset($data["_id"]); 
    $pdoStmt->execute($data); 
} 

しかし、これはあなたのMySQLテーブルがあなたのBSONドキュメントとまったく同じフィールドを持っていることを前提としています。 MongoDBのドキュメントデザインとは異なる最高のMySQLテーブルデザインがある可能性が高いです。これらは、データを格納するための2つの異なるパラダイムです。

これはまた、あなたのBSONドキュメントが単純な名前と値のペアを持ち、すべての値がスカラーであることを前提としています。 MySQLは配列や何かをサブ文書としてサポートしていません。これはまた、すべてのBSON文書が同じ構造、つまりすべての文書の同じ名前のフィールドのセットを持っていることを前提としています。

これを実行する前に、リレーショナルデータベースの設計について知っておく必要があります。

0

toArrayを使用せずに、以下のようにuがiterator_to_arrayを使用することができます:あなたはBSONオブジェクトのあなたの配列をループにしたい、と同じフィールドでMySQLのテーブルにそれらを挿入します

$resultArray = iterator_to_array($cursor); 
関連する問題