【问题标题】:Problem exporting from mongo and then importing to SQL Server从 mongo 导出然后导入 SQL Server 时出现问题
【发布时间】:2019-04-30 17:52:38
【问题描述】:

问题:如果我使用 $unwind,如何从 mongo 导出以便可以导入 SQL Server?

我需要使用 $unwind,这意味着我不能使用 mongoexport.exe。 Mongo.exe 为 json 提供不同的输出,如下所示。输出我无法加载到 SQL Server。我会导出为 csv 输出,但我的数据包含逗号。我会使用 $out 首先将我的数据复制到一个新集合中,然后使用 mongoexport,但我正在查询云中的生产服务器,我只有读取权限。

为了说明我的问题,我创建了一个集合,其中包含一个日期字段“edited_on”的记录。您可以在这里看到 mongoexport 输出以 ["_id:{$oid.... 开头,而 mongo 输出以 {"_id : ObjectID(....

*** 蒙古出口

命令:

mongoexport --quiet --host localhost:27017 --db "zzz" -c "Test_Structures" --fields 已编辑的_on --type json --jsonArray --out C:\export_test.json

输出:

[{"_id":{"$oid":"5aaa1d85b8078250f1000c0e"},"edited_on":{"$date":"2018-03-15T07:15:17.583Z"}}]

我可以使用 OPENROWSET 和 OPENJSON 将此数据导入 SQL。 此处描述:https://www.mssqltips.com/sqlservertip/5295/different-ways-to-import-json-files-into-sql-server/

*** 蒙哥

命令:

mongo localhost/UW --quiet -eval "db.Test_Structures.aggregate({ $project: { _id: 1 ,edited_on: 1} } )" > C:\aggregate_test.json

输出:

{ "_id" : ObjectId("5aaa1d85b8078250f1000c0e"), "edited_on" : ISODate("2018-03-15T07:15:17.583Z") }

【问题讨论】:

    标签: sql-server mongodb mongodb-query


    【解决方案1】:

    声明@JSON varchar(max)

    我的同事回答了我的问题。使用 replace() 删除 json 文件中导致如下问题的文本。

    选择 @JSON = BulkColumn 从 OPENROWSET (BULK 'C:\aggregate_test.json', SINGLE_CLOB) 作为 j SET @JSON = replace(replace(replace(@JSON,'objectid(',''),'isodate(',''),'")','"')

    SELECT * FROM OPENJSON (@JSON) With (...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多