1

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

0

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.

2

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.

+0

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

2

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 ...

+0

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

+0

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

0

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

Questions connexes