0

mysql テーブルを mongodb コレクションにインポートしようとしています。mysql 列を mongodb サブドキュメントとして配置したい: MYSQL =>

| col1 | col2 | col3 | col4 |
------------------------------
| abc  | def  | ghi  | jkl  |
------------------------------
| 1234 | 5678 | 9876 | 4567 |
------------------------------
| abc  | def  | ghi  | jkl  |
------------------------------
etc.....

mongodb では、それらを次のようにしたい: MongoDB =>

> doc1: { 
>                col1["abc", "1234", "abc", .....],
>                col2["def", "5678", "def", .....],
>                col3["ghi", "9876", "ghi", .....],
>                col4["jkl", "4567", "jkl", .....],
>                etc.

私はphpを使用し、私のコードは次のようになります:

$sql=mysql_query("select * from mytable") or die (mysql_error());
$count=mysql_num_rows($sql);
if (count > 0) {
while($data=mysql_fetch_row($sql)){
$mosql[]=$data;
}
$collection -> insert($mosql)
}

私がこれを得た出力として、それは私に列ではなく行を与えます:

doc1: { col1:[0:"abc", 1:"def", 2:"ghi", 3:"jkl".....], col2:[0:"1234", 1:"5678" , 2:"9876", 3:"4567" .....], col3:[0:"abc", 1:"def", 2:"ghi", 3:"jkl"..... 』など

誰かが私が間違っていることを知っていますか? 助けてくれてありがとう!

4

2 に答える 2

1

配列全体を一度に挿入するのではなく、MySQL から返された行の配列をループして、ドキュメントを MongoDB コレクションに次々と挿入することをお勧めします。

于 2013-02-27T14:42:33.133 に答える
1

最後に、これを行う方法を見つけました。この方法は長すぎるかもしれませんが、必要なものを手に入れました:

//var77
foreach( $mytables as $table => $struct ) {
  $sql77 = mysql_query("SELECT WINDSHEAR FROM XL_10331_EXPLOIT_251012 where flightid like '191622'") or die( mysql_error() );
  $count77 = mysql_num_rows( $sql77 );
  // If it has content insert all content
  if( $count77 > 0 ) {
    while($info77 = mysql_fetch_row($sql77)) {
      $mosql77[]=$info77[0];
  }

//var78
foreach( $mytables as $table => $struct ) {
  $sql78 = mysql_query("SELECT WING_AI_SYS_ON FROM XL_10331_EXPLOIT_251012 where flightid like '191622'") or die( mysql_error() );
  $count78 = mysql_num_rows( $sql78 );
  // If it has content insert all content
  if( $count78 > 0 ) {
    while($info78 = mysql_fetch_row($sql78)) {
      $mosql78[]=$info78[0];
  }

      $collection->insert(array('flightid'=>191622, 'AI_PB_ON_1'=>$mosql77, 'AI_PB_ON_2'=>$mosql78, etc....)); 
于 2013-02-28T16:53:20.013 に答える