0
votes

NA] Causé par: Java.SQL.SQLSyntaxErorException: ORA-00942: table ou vue n'existe pas - lot de printemps

Je travaille sur Botte à ressort V2.2.6.Release et Spring Lot Strong>. Dans cet exemple, je lis les données du système Oracle et je la mettit dans le système Postgres après avoir appliqué un filtre de données.

Remarque - Spring Batch est capable de lire les données de oracle db code> mais incapables de Ecrivez-le dans Postgresdb Code>. P>

String sql = "INSERT INTO \"BATCH\".employee(rowid_object, status) VALUES (:rowid_object, :status)";


2 commentaires

Je vous encourage vraiment à lire: Stackoverflow.com/help/behavior . Si quelqu'un prend le temps de vous aider dans les détails ( Pasteboard.co/j2q4aar.png ), ce n'est pas Conforme au code de conduite afin de supprimer le message ( Pasteboard.co/j2qwpff.png , pasteboard.co/j2qwxeppk.png ) sans même dire merci ou accepté des réponses, puis passez à autre chose (puisque votre problème est Correction) et poster d'autres questions sous une autre identité: Stackoverflow.com/questions/61085861 .


Pasteboard.co/j2r3t01.png . Et n'hésitez pas à bowervote mes réponses Stackoverflow.com/a/61081771/5019386 , je vais toujours répondre à toute question sur le lot de printemps de manière professionnelle et selon le code de conduite.


3 Réponses :


-1
votes

org.springframework.jdbc.badsqlgammareXception: préparéStatementCallback; Bad SQL grammaire [Insert dans batch.employe (emp_id, prénom) valeurs (?,?)]; Exception imbriquée est java.sql.sqlsyntaxerrorexception: ora-00942: table ou affichage n'existe pas

Selon cette erreur, le tableau Batch.employe n'existe pas. Assurez-vous de créer cette table avant d'exécuter votre travail.


7 commentaires

Droite, ma question est de savoir comment pouvons-nous le créer automatiquement?


Où est défini cette table? Veuillez vous référer à Docs.spring .io / Spring-Boot / Docs / Courant / Référence / HTML / ... Si vous souhaitez que la démarrage du ressort le crée automatiquement.


Pouvons-nous utiliser la combinaison de Spring JDBC (itemReader) pour lire les données et Jpawriter pour écrire les données au système cible?


Je n'ai pas mentionné JPA, le lien que j'ai partagé est pour toutes les options disponibles. Si vous souhaitez utiliser Flagway, voici la section pertinente: docs.spring.io/spring-boot/docs/current/reeference/html/... .


Je suis désolé, veuillez confirmer avec Spring JDBC, puis-nous créer des tables automatiquement?


@Paa Vous ne pouvez pas utiliser la table automatiquement générée à l'aide de JDBC, il est préférable d'utiliser des outils de migration qui peuvent aider à exécuter automatiquement votre SQL


@Abinashghosh - merci. Pourriez-vous s'il vous plaît partager plus d'informations sur l'outil de migration?



0
votes

Oui, vous devez d'abord avoir l'entité spécifique si vous initialisez la déclaration comme un haricot pour une table spécifique


2 commentaires

Pourriez-vous s'il vous plaît élaborer? Je cherche à créer des tables de DB cible automatiquement, tous les efforts que je prends pour faire l'objet, puis le persistez.


Nope, je n'ai pas d'entité JPA pour l'employé, mais j'ai créé une classe de modèle d'employé car j'utilise Spring JDBC pour enregistrer les données.



0
votes

batch.employee n'existe pas, c'est pourquoi cette erreur se produit.

Vous pouvez utiliser des outils de migration pour exécuter SQL pour créer une table et d'autres modifications. Certains outils de migration populaires sont Flyway et liquibase .

Les outils de migration vous permettent de créer et de mettre à jour votre base de données. Il exécute automatiquement vos fichiers SQL définis dans une commande de votre donnée. Lorsque vous devez mettre à jour une table, ajoutez un autre fichier de script, puis il l'exécute automatiquement.

Suivez cette étape pour configurer: https://flywaydb.org/getstarted/firstetete/maven

Migrations de la base de données avec tutoriel de voie aérienne


0 commentaires