问题:如何从mongo导出,以便在我使用$ unwind时可以导入SQL Server?
我需要使用$ unwind,这意味着我不能使用mongoexport.exe。 Mongo.exe为json提供不同的输出,如下所示。我无法加载到SQL Server的输出。我将导出为csv输出,但我的数据包括逗号。我将使用$ out首先将数据复制到新集合中,然后使用mongoexport,但是我正在查询只有读取权限的云中的生产服务器。
为了说明我的问题,我创建了一个包含一个记录的集合,该记录的日期字段为“ edited_on”。您可以在此处看到mongoexport输出以[“ _id:{$ oid ....开始,而mongo输出以{” _id:ObjectID(....
*** MONGOEXPORT
命令:
mongoexport-安静--host本地主机:27017 --db“ zzz” -c “ Test_Structures” --fields edited_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
命令:
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”)}
答案 0 :(得分:0)
声明@JSON varchar(max)
我的同事回答了我的问题。使用replace()删除导致问题的json文件中的文本,如下所示。
SELECT @JSON = BulkColumn 从OPENROWSET(BULK'C:\ aggregate_test.json',SINGLE_CLOB)作为j SET @JSON = replace(replace(replace(@ JSON,'objectid(',''),'isodate(',''),'“)','”')
SELECT * FROM OPENJSON(@JSON)使用(...)