Question

Mon équipe et moi développons rapidement une Webapp soutenue par une base de données Oracle.Nous utilisons le plugin flyway de maven pour gérer la création et le remplissage de notre base de données à partir de scripts INSERT SQL.Généralement, nous ajoutons 3 à 4 tables par sprint et/ou modifions la structure des tables existantes.

Nous modélisons le schéma dans un outil externe qui génère le schéma incluant les contraintes et l'exécutons en premier, suivi des INSERT SQL pour garantir l'intégrité de toutes les données.

Nous passons trop de temps à gérer les modifications apportées au SQL pour couvrir les nouvelles tables. J'entends par là l'ajout de données de colonne supplémentaires aux instructions SQL INSERT existantes, sans parler de la création manuelle des nouvelles données SQL INSERT, en particulier lorsqu'elles font référence à un étranger. clé.

Il existe sûrement un autre moyen, peut-être de conserver les données brutes dans Excel et de les transmettre via un analyseur à la base de données.Quelqu'un a-t-il des idées ?

10 tables jusqu'à présent et jusqu'à 1 000 instructions SQL, la base de données n'est pas active, nous la démontons donc à chaque build.

Merci

Modifier:Les données insérées sont des données de référence statiques dont dépend la plateforme pour fonctionner - menus, etc.L'architecture est Tomcat, JSF, Spring, JPA, Oracle

Était-ce utile?

La solution

Veuillez stocker vos données brutes dans des tableaux de la base de données - hé !pourquoi diable veux-tu utiliser Excel pour ça ?Vous disposez d'Oracle Database - le meilleur outil pour ce travail !

Chargez vos données non polies à l'aide de SQL*Loader ou de tables externes dans des tables normales de la base de données.De là, vous disposez de SQL – l’outil rdbms le plus puissant pour manipuler vos données.NE JAMAIS ralentir par des insertions lentes.(1000 instructions SQL).S'il vous plaît, faites le CTAS.Ajoutez/activez les contraintes APRÈS avoir chargé toutes les données.

create table t as select * from raw_data; 

or 

insert into t (x,y,z) select x,y,z from raw_data;

En utilisant cette méthode, vous pouvez contourner le moteur SQL et effectuer des insertions directes (chargement de chemin direct).Cela peut même être fait en parallèle pour que vos données entrent très rapidement dans la base de données !

Effectuez toutes vos manipulations de données en SQL ou PLSQL.(Pas dans l'application)

  • Veuillez investir du temps dans l'apprentissage de la base de données Oracle.Il regorge de fonctionnalités à utiliser !
  • Ne vous contentez pas de l'utiliser comme un datadump (un endroit où vous stockez vos données).Créez des packages - des interfaces vers votre application - votre API vers la base de données.
  • Ne vous contentez pas de jeter des milliers d'instructions compilées dans votre application.Cela va devenir compliqué.
  • Construisez votre logique métier dans la base de données PLSQL - utilisez votre application pour la présentation.

Bonne chance!

Autres conseils

Alternativement, vous avez également la possibilité de mettre en œuvre une migration Java.Il peut lire toutes les données d'entrée dont vous disposez (Excel, csv, ...) et effectuer les insertions appropriées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top