从mongo导出然后导入到SQL Server时出现问题

时间:2018-11-28 18:33:48

标签: sql-server mongodb mongodb-query

问题:如何从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”)}

  

1 个答案:

答案 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)使用(...)