Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Migration » MySQL===>PostgreSQL » 11/06/2012 16:15:17
pour être plus clair,j'avais une base de données MySQL dont les é,ç... ne s'affichent pas correctement,j'ai fais une migration à travers un programme java ( c'est pas très important ) , Jusqu’à mnt tt va bien
maintenant je voudrai résoudre ce problème dans ma nouvelle base postgreSQL !!
#2 Migration » MySQL===>PostgreSQL » 11/06/2012 15:54:12
- zero.h
- Réponses : 3
bonjour,
j'ai fait une migration de données de MySQL vers Postgres , j'avais un problème au niveau des caractères spéciaux au niveau de la premoere base,est ce qu'il y a une possibilité de resoudre ce probleme au niveau de ma base postgreSQL??
merci d'avance !
#3 Général » la colonne « jugebean0_.id » doit apparaître dans la clause GROUP BY » 01/06/2012 09:39:07
- zero.h
- Réponses : 1
Bonjour,
j'ai la requête HQL
FROM JugeBean j GROUP BY j.nomComplet
qui marche parfaitement sur MySQL mais lorsque je l’exécute sur postgres j'ai le message d'erreur suivant
eptionReporter:72 - ERREUR: la colonne « jugebean0_.id » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat
merci d'avance
#4 Re : Migration » MySQL--->Postgres (Jpa)( la valeur d'une clé dupliquée rompt la contr) » 16/05/2012 12:18:43
en fait sur postgres j'ai pas de tables, ils sont crées automatiquement par la couche jpa (Entity) !!
et sur le MySQL les donnees sont pas dupliquéés
#5 Migration » MySQL--->Postgres (Jpa)( la valeur d'une clé dupliquée rompt la contr) » 16/05/2012 10:39:11
- zero.h
- Réponses : 3
Bonjour,
j'essaye de faire une migration de donnees de MySQL vers Postgres et pour cela j'utilise la couche Jpa avec Eclipselink ,la procedure est de lire les donnees à travers la premiere couche qui est celle de MySQL et les mettre à travers l'autre couche qui est en liaison avec Postgres,j'ai fait une classe Converter pour faire la conversion des donnes
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sensoredabmigration.application;
import java.lang.reflect.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
*
*/
public class Converter<S, D> {
public Converter() {
}
/**
* Returns the getter method
* @param attribute
* @return
*/
private String getGetterMethod(final Field attribute) {
final String first = attribute.getName().substring(0, 1).toUpperCase();
final String next = attribute.getName().substring(1, attribute.getName().length()).toLowerCase();
return "get" + first + next;
}
/**
* Returns the getter method
* @param attribute
* @return
*/
private String getSetterMethod(final Field attribute) {
final String first = attribute.getName().substring(0, 1).toUpperCase();
final String next = attribute.getName().substring(1, attribute.getName().length()).toLowerCase();
return "set" + first + next;
}
public List<D> convert(final Class sourceClass, final Class destinationClass, final List<S> listOfSource) {
final List<D> listOfDestinations = new ArrayList<D>();
final Field[] attributesSource = sourceClass.getDeclaredFields();
try {
for (Iterator<S> it = listOfSource.iterator(); it.hasNext(); ) {
final S currentSource = it.next();
final Object currentDestination = destinationClass.newInstance();
for (int i = 0; i < attributesSource.length; i++) {
final Field currentAttribute = attributesSource[ i ];
final String getter = getGetterMethod(currentAttribute);
final String setter = getSetterMethod(currentAttribute);
try {
final Method getterMethod = sourceClass.getMethod(getter, null);
final S resultGetter = (S) getterMethod.invoke(currentSource, null);
Class[] parametres = new Class[1];
parametres[0] = (Class) currentAttribute.getGenericType();
final Method setterMethod = destinationClass.getMethod(setter, parametres);
final D resultSetter = (D) setterMethod.invoke(currentDestination, resultGetter);
} catch (NoSuchMethodException exception) {
continue;
}
}
listOfDestinations.add((D) currentDestination);
}
} catch (IllegalArgumentException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
}
return listOfDestinations;
}
}
dans mes entity j'utilise pas le "GeneratedValue" car j'ai deja les donnes dans l'autre base et je veux garder les meme id
voici un bout de code d'une Entity
@Entity
@Table(name = "type_sensoriel")
@NamedQueries({
@NamedQuery(name = "DestinationTypeSensoriel.findAll", query = "SELECT s FROM DestinationTypeSensoriel s"),
@NamedQuery(name = "DestinationTypeSensoriel.findById", query = "SELECT s FROM DestinationTypeSensoriel s WHERE s.id = :id"),
@NamedQuery(name = "DestinationTypeSensoriel.findByNom", query = "SELECT s FROM DestinationTypeSensoriel s WHERE s.nom = :nom")})
public class DestinationTypeSensoriel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "nom")
private String nom;
public DestinationTypeSensoriel() {
}
et là voici un bout de code pour ma classe main pour une seule table
//TypeSensoriel
final SourceTypeSensorielJpaController controllerSourceTypeSensoriel = new SourceTypeSensorielJpaController();
final DestinationTypeSensorielJpaController controllerDestinationTypeSensoriel = new DestinationTypeSensorielJpaController();
final List<SourceTypeSensoriel> listeSourceTypeSensoriel = controllerSourceTypeSensoriel.lecture();
final Converter<SourceTypeSensoriel, DestinationTypeSensoriel> converterTypeSensoriel = new Converter<SourceTypeSensoriel, DestinationTypeSensoriel>();
final List<DestinationTypeSensoriel> allSourcesTypeSensoriel = converterTypeSensoriel.convert(SourceTypeSensoriel.class, DestinationTypeSensoriel.class, listeSourceTypeSensoriel);
for (DestinationTypeSensoriel c : allSourcesTypeSensoriel) {
controllerDestinationTypeSensoriel.create(c);
}
mon erreur est le suivant
Internal Exception: org.postgresql.util.PSQLException: ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « type_sensoriel_pkey »
Détail : La clé « (id)=(1) » existe déjà.
Error Code: 0
Call: INSERT INTO type_sensoriel (id, nom) VALUES (?, ?)
bind => [1, Profil]
merci d'avance
Pages : 1