Проблема экспорта из Монго, а затем импорта в SQL Server - PullRequest
0 голосов
/ 28 ноября 2018

Вопрос: как мне экспортировать из mongo, чтобы я мог импортировать в SQL Server, если я использую $ unwind?

Мне нужно использовать $ unwind, что означает, что я не могу использовать mongoexport.exe.Mongo.exe дает другой вывод для JSON, как показано ниже.Вывод я не могу загрузить в SQL Server.Я бы экспортировал как вывод csv, но мои данные включают запятые.Я бы использовал $ out, чтобы сначала скопировать мои данные в новую коллекцию, а затем использовать mongoexport, но я запрашиваю производственный сервер в облаке, где у меня есть только права на чтение.

Чтобы проиллюстрировать мою проблему, я создалколлекция с одной записью, которая имеет поле даты "edited_on".Здесь вы можете увидеть, что вывод mongoexport начинается с ["_id: {$ oid ...., а вывод mongo начинается с {" _id: ObjectID (….

*** MONGOEXPORT

Команда:

mongoexport --quiet --host localhost: 27017 --db "zzz" -c "Test_Structures" - поля edited_on --type json --jsonArray --out C: \ export_test.json

Вывод:

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

Я могу импортировать эти данные в SQL с OPENROWSET вместе с OPENJSON. Описано здесь: 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 голосов
/ 28 ноября 2018

Объявите @JSON varchar (max)

Мой коллега ответил на мой вопрос.Используйте replace () для удаления текста в файле json, вызывающего проблемы, следующим образом.

SELECT @JSON = BulkColumn FROM OPENROWSET (BULK 'C: \ aggregate_test.json', SINGLE_CLOB) как jSET @JSON = replace (replace (replace (replace (@ JSON, 'objectid (', ''), 'isodate (', ''), '")', '"')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...