Est-il possible de migrer des données de MongoDB vers SQL-Server?

J'ai cherché autour de moi qu'il y a des moyens de transférer / synchroniser datatables de sql-server à mongodb. Je sais aussi que Mongodb contient des collections au lieu de table et datatables sont stockées différemment. Je veux savoir s'il est possible de déplacer des données de mongodb vers sql-server? Si oui, quels outils / sujets devrais-je examiner?

Bien sûr, c'est possible, mais vous devrez find un moyen de forcer la flexibilité d'un document db comme MongoDB dans un SGBDR comme SQL Server.

Cela signifie que vous devez définir comment vous voulez gérer les champs manquants (sera-t-il un NULL dans la colonne db? Ou une valeur par défaut?) Et d'autres choses qui ne rentrent généralement pas bien dans une database relationnelle.

Dit faire, vous pouvez utiliser un outil ETL capable de se connecter aux deux bases de données, SSIS peut être un exemple si vous voulez restr dans le monde MicroSoft (vous pouvez vérifier cette Importation de données MongoDB utilisant SSIS 2012 pour avoir une idée) ou vous pouvez aller pour un outil open source comme Talend Big Data Integration qui a un connecteur vers MongoDB (et bien sûr vers SQL Server).

Il n'y a aucun moyen de déplacer directement datatables de MongoDB vers SQL Server. Comme datatables MongoDB ne sont pas relationnelles, un tel mouvement doit impliquer la définition d'un model de données relationnel cible dans SQL Server, puis le développement d'une transformation capable de prendre datatables dans MongoDB et de les transformer en model de données cible.

La plupart des outils ETL tels que Kettle ou Talend peuvent vous aider avec ce process, ou si vous êtes gourmand en punition, vous pouvez simplement écrire des tas de code.

Gardez à l'esprit que si vous avez besoin que ce process de transformation soit en ligne, ou appliqué plus d'une fois, vous devrez peut-être le modifier pour tout petit changement dans la structure ou les types de données stockés dans MongoDB. Par exemple, si un développeur ajoute un nouveau champ à un document dans une collection, votre process ETL devra être repensé (éventuellement nouveau model de données, nouveau process de transformation, etc.).

Si vous n'êtes pas vendu sur SQL Server, je vous suggère de considérer Postgres, car il existe un outil open source très répandu appelé MoSQL qui a été développé expressément pour synchroniser une database Postgres avec une database MongoDB. Il est principalement utilisé à des fins de création de rapports (extraction des données de MongoDB et dans un SGBDR afin de pouvoir superposer des outils analytiques ou de reporting).

MoSQL est largement adopté et bien supporté, et pour datatables gravement torturées, vous avez toujours la possibilité d'utiliser le type de données Postgres JSON, qui n'est pas supporté par les outils d'parsing ou de reporting, mais vous permet au less d'interroger directement datatables Postgres. En outre, et maintenant mon parti pris persiste, Postgres est 100% open source, tandis que SQL Server est 100% open source. 🙂

Enfin, si vous ne faites qu'extraire datatables de MongoDB pour simplifier l'parsing ou le reporting, vous devriez considérer SlamData , un projet open source que j'ai démarré l'an dernier et qui permet d'exécuter ANSI SQL sur MongoDB en utilisant 100% d'exécution en database ( c'est fondamentalement un compilateur d'API SQL-to-MongoDB). La plupart des personnes qui utilisent le projet semblent l'utiliser pour des parsings ou pour signaler des cas d'utilisation. L'avantage est que cela fonctionne avec datatables telles qu'elles sont, vous n'avez donc pas besoin d'effectuer ETL, et bien sûr, il est toujours à jour car il fonctionne directement sur MongoDB. Un inconvénient est que personne n'a encore construit un pilote ODBC / JDBC pour cela, donc vous ne pouvez pas connecter directement les outils BI à SlamData.

Bonne chance!

Il y a un outil fourni par MongoDB appelé mongoexport et il est capable d'exporter des files csv. Ces files csv peuvent être facilement importés dans MySQL. Bonne chance!