11

PostgreSQLデータベースに多数のGBのデータが保存されており、それらをMongoDBにインポートする必要があります。これは、CSVエクスポートとmongoimportを使用して行いました。

そのCSVにはこの「2011-06-25」のような列があり、MongoDateではなく文字列としてインポートされているため、日付で効果的に検索できません。

私はこれを見つけました:http ://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-Example%3AImportingInterestingTypes ですが、例では、ファイルにJSON構造を使用する必要があります。PostgreSQLからJSONファイルをエクスポートする必要が本当にありますか?

私がそうするなら-どうやって?

そうでない場合、CSVで「MongoDate」をエクスポートするにはどうすればよいですか?

4

4 に答える 4

21

実際、最初のオプションは、巨大なデータでもかなり高速です。mongo コンソールを使用したクエリの例を次に示します。

/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});"
于 2013-02-14T13:55:24.077 に答える
9

オプション:

  • データを CSV としてインポートし、インポート後のデータを Date() に変換します (mongo コンソールを使用するか、お気に入りの言語で記述されたスクリプトを使用します)。

  • データを JSON としてインポートし、$date 記述子を使用して日付文字列を Date インスタンスに変換します

于 2011-06-25T06:03:58.287 に答える
2

お気に入りの言語を使用してスクリプトを作成し、データをインポートします。データ型を制御し、データに構造的な変更を適用することもできます。

一般に、表形式のデータからドキュメント データベースに変換する場合、データのマッピングが同じではないことがわかります。

スクリプトを作成する場合、複数のコピー (またはスレッド) の実行をサポートして、インポート速度を向上させることもできます。

于 2011-06-25T14:35:20.090 に答える
2

可能であれば、ソース CSV からの再インポートがより高速になるはずです。比較的大きなデータセット (130M オブジェクト、ソース CSV ~6GB) の場合、mongoimport実行には 40 分かかりましたが、forEach@webDEVILopers によって提案された実行には 24 時間以上かかりました (その時点でキャンセルしました)。

CSVからインポートして日付を変換するには、実行しました

mongoimport --db your-db-name --type csv --file your-file.csv --collection your-collection --fields timestamp.date\(2006-01-02\ 15:04:0
5.00000+00\),count.int32\(\), --columnsHaveType

ソース形式で特定の日付を指定する必要があり.date()ますしたがって、タイムスタンプは「2018-02-03 12:09:23.00000+00」のようになりました。これは、基準日 (2006 年 1 月 2 日 15:04:05) をその形式でフォーマットすることを意味します (上記のコマンドのように)。これを参照してください。

于 2018-04-11T11:31:51.457 に答える