2010-12-03 43 views
2

i ont un fichier Excel qui décrivent toute la structure de la table d'une table de base de donnéesBase de données de schéma Générateur

Je voudrais générer schéma de schéma de base de données et de la structure du schéma de base de données pour la base de données sqlite3 à partir de ce fichier Excel.

Une idée de comment faire cela?

Merci.

+1

En supposant que la structure de la table/champs étaient assez grands pour non seulement entrer à la main, je d sauvegardez la feuille de tableur Excel délimitée, puis écrivez un programme pour analyser le nouveau fichier dans le texte approprié appels SQL pour créer votre schéma. Ensuite, vous pouvez l'exécuter en tant que script sur votre base de données SQL de votre choix. – slycrel

+0

C'est ce que je cherche mais aucune idée de comment écrire le script. – peterwkc

+0

Une idée de comment commencer? – peterwkc

Répondre

2

En supposant que chaque onglet est nommé pour une table et a des cellules en tant que telle:

Name DataType 
ID integer 
Name varchar(255) 

Utilisez soit Python ou Java pour lire le classeur à l'aide python-excel ou Apache POI for Excel, respectivement. Je suis sûr que d'autres langages, en particulier .NET, ont aussi des bibliothèques à cet effet. Les deux langues ont aussi des pilotes pour sqlite3. Itérer à travers chaque onglet - utilisez le nom de l'onglet pour l'instruction CREATE de la table.

Itérez à travers chaque ligne de l'onglet et utilisez cette information pour définir les colonnes de la table. Définir des choses comme les clés primaires/étrangères et l'incrémentation automatique nécessitera des cellules supplémentaires ou une convention de nommage + quelques algorithmes intelligents.

Il est probable que chaque instruction CREATE devra être transmise séparément sur la connexion à la base de données.

0

Il existe généralement de meilleurs outils pour cela qu'Excel. Commencez avec votre base de données SQLite3 et analysez-la avec un gestionnaire de base de données qui a un éditeur de schéma tel que WinSQL.

+0

La structure de la base de données a déjà été décrite dans un fichier Excel. Donc, j'ai besoin d'extraire dans l'éditeur de schéma. – peterwkc

0

En supposant que Excel contient des colonnes de fieldName et de type Je voudrais écrire le script minuscule VB qui se traduira par les paires en chaînes Java SQL comme:

private static final String DATA_CREATE="create table if not exists\n" 
     + "MYTABLE\n" 
     + "DATA_ID integer primary key autoincrement,\n" 
     + "RAW_ID integer not null,\n" 
     + "ORDER_ID integer not null,\n" 
     + "CHUNK blob);"; 

puis simplement ajouter des chaînes ce-aussi bien dans votre source de Java. Ou en option, vous pouvez SQL scripts écrire dans le fichier les placer quelque part dans les actifs sur les exécuter à partir SQLite

0

Si je devais écrire un tel programme, je voudrais faire les hypothèses suivantes:

  • La feuille deviendrait la nom de la table.
  • Les en-têtes de colonne deviendraient le nom de la colonne.
  • La règle de formatage de la colonne contrôle le type de données.

Avec ces contraintes à l'esprit, vous pouvez créer un outil d'importation et de création.

Pour ce faire, en Java, j'utiliser une bibliothèque qui peut lire Excel fichiers, par exemple Apache POI: (Voici le dependncy Maven je l'utilise pour elle)

<dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.6</version> 
    </dependency> 

Lire le fichier Excel en utilisant POI, analysez les colonnes et créez dynamiquement la table dans la base de données sqllite. (Déposez la table si elle existe). Ensuite, en fonction du type, générez une instruction préparée et insérez les données en fonction de chacune des lignes de la feuille.

Ce serait la configuration de base. De là, vous devez décider comment pour faire des clés si vous en avez besoin et ainsi de suite.

0

Je ne pense pas que ce que vous demandez est possible.

Une solution pour votre question, sera d'afficher une table par exemple à partir d'Excel, et demander de l'aide pour le transformer en SQL