J'ai quelques difficultés à résoudre. J'ai besoin d'extraire des données dans ma base de données SQL à partir de sources arbitraires. Les détails sont: Je connais la structure exacte de ma base de données et la structure ne changera pas. Quand je reçois de nouvelles données, cela ne se produira qu'une seule fois, au moment où je crée une instance de ma base de données. Je vais créer de nombreuses instances de ma base de données et chaque fois il faudra extraire des données d'une source différente, et ces sources seront structurées de différentes manières. Les données contiendront probablement des milliers de lignes d'enregistrements. La source de données sera probablement conservée dans Excel, Access, Word plus rare et encore plus rare, elle sera conservée dans une base de données SQL. Je peux supposer que la plupart des données de base seront les mêmes, il suffit de les placer dans des endroits différents. Ils suivront un regroupement général malgré la façon dont ils s'y sont tenus. Essentiellement, je transfère des données de systèmes hérités à un système SQL et cela doit être fait pour de nombreux groupes et ils ont besoin de leur propre instance privée de la base de données. Des pensées sur comment je ferais cela? Est-ce que ce serait difficile d'écrire un programme qui ferait la plupart de ça pour moi?Transfert de données à partir d'une base de données de structure inconnue vers une base de données de structure connue
Répondre
La meilleure façon de résoudre ce problème est avec solution ETL (Extract-Transform-Load). Un bon choix est SSIS qui est à travers la suite BI de Microsoft.
Ceci est certainement une question du monde réel. Est-il possible d'écrire un programme qui fera la plupart de ceci? Je ne pense pas à la majeure partie de cela, mais peut-être à une partie de celle-ci.
Pour chaque table de votre système cible, créez une vue qui affiche les données source que vous prévoyez d'insérer. Choisissez des noms de colonnes qui facilitent la lecture de ce qui doit être fait; Vous choisirez probablement les noms de colonne correspondant aux colonnes cibles dans votre instruction INSERT
. Enregistrez vos instructions INSERT
en tant que procédures stockées. Maintenant, lorsque vous recevez une nouvelle source de données dans un nouveau format, vous devrez toujours recréer vos vues, mais une fois que les vues affichent les bonnes données sous les noms de colonnes que vous avez choisis, vous pouvez exécuter vos procédures stockées sans changement.
J'ai un type de projet similaire où les données sont récupérées à partir d'Access, fichier .ini, dates de modification de fichier et MySQL. Je gratte ces données tous les matins et je les ajoute à un schéma SqlServer.
J'ai créé un DataTable et, en parcourant un ensemble de répertoires, j'insère les données dans chaque nouvelle ligne. Une fois le DataTable terminé, j'effectue un bulkcopy à ajouter à la base de données.
J'espère que cela vous aide un peu. Je sais que mon projet ne couvre pas tous les aspects de votre question; mais aussi ne pas avoir un DBA pour fournir des vues, des procédures stockées, etc. Je n'ai pas non plus le temps supplémentaire à consacrer à de telles choses. Pas la plus favorable des conditions, mais c'est comme ça.
HTH ...
Merci pour le conseil. Je pensais à séparer le programme en différents modules, un pour chaque source différente (c'est-à-dire un pour Excel, un pour l'accès ..) et ensuite essayer et tirer parti de leurs outils. Cependant, à un moment donné, j'aimerais être aussi neutre que possible. Pensez-vous que je pourrais faire ce principalement automatisé – James
Je cherchais quelque chose savoir comme ETL, je pense que si vous avez regardé dans certains des logiciels ETL, vous seriez en mesure de trouver cela ferait automatiquement pour vous. – James
Ce sont les blocs de construction pour la conscience ou la base ......
1 Une base de données qui organise des milliers de fichiers semblable à l'ADN,
2 interface utilisateur
3 parties sont cachés, empêchant une violation de système/plantage
- 1. structure de la base de données
- 2. Structure de marquage de base de données
- 3. diagramme de structure de base de données
- 4. structure de la base de données
- 5. structure de base de données magento?
- 6. structure du modèle de base de données
- 7. Structure de base de données simple (SQLite-)
- 8. relations de données de base et structure de données
- 9. Informations relatives au nœud dans une structure de base de données pour l'arbre Structure de données
- 10. Structure de base de données pour une recherche à facettes
- 11. Remplissez une structure de données récursive à partir d'une base de données autoréférentiel Tableau
- 12. Création d'une structure de base de données d'appartenance ASP.Net dans une base de données existante
- 13. Mysql - modifier la structure de la base de données - scénario de la base de données
- 14. Structure de la base de données pour les données de base remplacées sélectivement par client
- 15. Structure de données
- 16. Visualiseur de structure de base de données/impression
- 17. Évaluation de la structure de la base de données système
- 18. Préparation du transfert vers une base de données unique
- 19. TV Guide Script PHP/Structure de la base de données
- 20. Comment automatiser (partiellement) le transfert d'une structure de base de données FileMaker et du contenu d'un champ vers une deuxième base de données?
- 21. base de données relationnelle et la structure de réseau
- 22. structure de base de données MySQL pour un questionnaire
- 23. Structure de la base de données pour les modèles CakePHP
- 24. Structure de la base de données d'un site multilingue
- 25. comment vérifier la structure de la base de données interne
- 26. Configuration de base de données CakePHP ACL: Structure ARO/ACO?
- 27. Stockage d'une structure de répertoires dans la base de données
- 28. Structure de la base de données du mur Facebook
- 29. structure de données multidimensionnelle
- 30. Structure de données arborescente
J'aime l'idée de faire quelques vues généralisées et avoir la carte de données entrante à ces vues. Je voudrais faire un programme de type assistant pour aider l'utilisateur à traverser le processus.Idéalement, je serais complètement à l'écart, et l'utilisateur (qui a seulement une compréhension de base des ordinateurs) serait en mesure de télécharger leurs données. Aussi, je dois essentiellement cacher la base de données de l'utilisateur. Pensez-vous que cela est possible? – James