2011-04-01 4 views
7

J'ai 2 bases de données, Oracle et SQlite. Et je veux créer des copies exactes de certaines tables Oracle dans SQLite dans l'une de mes applications. La plupart de ces tables contiennent plus de 10 000 lignes, donc copier chaque table en passant par chaque ligne n'est pas efficace. La structure de la table peut également changer à l'avenir, donc je veux y parvenir en utilisant un moyen générique sans coder en dur les instructions SQL. Y a-t-il un moyen de le faire?Création de copies de tables de base de données Oracle dans une base de données SQLite

p.s. - Cette application est en cours de développement en utilisant le framework Qt. Toutes les requêtes et bases de données sont représentées par des objets de module QtSql.

Répondre

5

Impossible aider avec framework Qt, mais pour de grandes quantités de données est généralement préférable d'utiliser des opérations de copie en bloc.

Exporter les données d'Oracle http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25107/impexp.htm#BCEGAFAB

Importer des données dans SQLite http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

IHTH

+0

Merci refuge, pour votre réponse rapide. Mais tel qu'il apparaît, ce déchargement doit être effectué à l'aide de l'interface utilisateur graphique Oracle Database XE ou de SQL * Loader. Mais y a-t-il un moyen de le faire dans mon code d'application? Si c'est possible, ce sera la solution idéale. – kasper360

+0

Il existe presque toujours un moyen d'exécuter un programme externe à partir du code de l'application. Cela peut être aussi simple que de créer une ligne de commande comme cmdLine = "SQL * Loader out -oTabDelimited -T $ {TableName} -F $ {outFilename}" et en utilisant le système cmd pour l'exécuter, ie system (cmdLine); (Ceci est juste une idée générale de la façon de le faire, alors regardez dans les pages d'aide pour votre langue dans laquelle votre code est écrit. (Qt?) Recherchez une commande cmd, cmd système, ou autre. Utilisez-le avec des variables comme mon exemple, et répliquez-le si nécessaire pour gérer toutes les activités de la base de données. Attention, la gestion de la base de données dans le code peut devenir assez complexe. – shellter

5

Qu'est-ce que vous voulez probablement vraiment utiliser est le Oracle Database Mobile Server, qui permet de synchroniser automatiquement une SQLite et une base de données Oracle . La version récente d'Oracle Database Mobile Server (anciennement appelé Oracle Database Lite Mobile Server) prend en charge la synchronisation entre une base de données Oracle et une base de données SQLite ou Berkeley exécutée sur le client. Il prend en charge l'échange de données synchrone et asynchrone, ainsi que les communications sécurisées entre le client et le serveur. Vous pouvez configurer le serveur mobile pour qu'il se synchronise en fonction de plusieurs options sans avoir besoin de modifier l'application qui accède à la base de données.

Vous pouvez également trouver un excellent discussion forum pour les questions des développeurs et des réalisateurs à partir du serveur Mobile.

Questions connexes