从 mongo 导出然后导入 SQL Server 时出现问题
Posted
技术标签:
【中文标题】从 mongo 导出然后导入 SQL Server 时出现问题【英文标题】:Problem exporting from mongo and then importing to 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")
【问题讨论】:
【参考方案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 (...)
【讨论】:
以上是关于从 mongo 导出然后导入 SQL Server 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
如何远程把sql server中的数据导入到本地sql server中?