IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Donnés décalées lors de l'enregistrement du résultat d'une requête


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2017
    Messages : 29
    Points : 30
    Points
    30
    Par défaut Donnés décalées lors de l'enregistrement du résultat d'une requête
    Bonjour,

    J'ai une requête SQL dont j'exécute 1 fois par semaine et j'enregistre le résultat sous format Excel.

    Problème :
    C'est la 1ere fois qui m'arrive
    quand j'enregistre le résultat de la requête SQL, et j'ouvre le ficher Excel les données sont un peu partout (à gauche et à droite) des cellule vides qui est impossible de corriger ces décalage manuellement .

    1- J'ai essayé de fermer Mysql et ouvrir et refaire =>ça marche pas
    2- j'ai essayé de copier le résultat et ouvrir un fichier Excel et copier le résultat dedans => ça marche pas
    3- j'ai essayé d'aller exécuter la requête depuis un autre ordinateur et faire l'étape 1 et 2 => ça marche pas

    Je suis vraiment bloqué, Est-ce qu'il y a quelqu'un qui a des idées ? SVP

    je vous remercie d'avance

    Cordialement

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Alexano211.

    Citation Envoyé par Alexano
    Est-ce qu'il y a quelqu'un qui a des idées ?
    Nous ne sommes pas une boîte à idées mais juste un forum d'entraide !

    Citation Envoyé par Alexano
    j'enregistre le résultat sous format Excel.
    Je ne sais pas ce que vous entendez pas format Excel, mais quand je désire sauvegarder le résultat d'une requête, c'est un résultat de type chaîne de caractères
    Vous pouvez mettre cela dans un fichier de type texte, suffixé par ".txt", ou par ".csv".
    C'est lors du chargement du fichier ".csv" dans le tableau excel que la conversion se fait !

    D'autre part, vous devez respecter le format des données que vous désirez introduire dans ".csv" qui signifie "comma separed values".
    --> https://fr.wikipedia.org/wiki/Comma-separated_values

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2017
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    En exécutant la requête SQL via SQL Server, j'ai le résultat je l'enregistre en ficher Excel (format xls) puis je travaille dessous...

    à chaque fois quand j'enregistre le résultat, je n'ai aucun problème de décalage

    Sauf cette fois-ci, le résultat collé en Ficher Excel format xls, n'est pas bon parce que beaucoup des lignes se décalent vers le droit et les positions ne sont pas bonne et impossible de modifier à la main car ce sont des données de 100 000 lignes

  4. #4
    Membre confirmé Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Points : 487
    Points
    487
    Par défaut
    Citation Envoyé par alexano211 Voir le message
    En exécutant la requête SQL via SQL Server, (
    Euh... Ici, nous sommes dans le forum MySQL...

    Ceci étant, vous avez probablement dans vos colonnes, résultats de votre requête, des chaines de caractères qui comportent des virgules, tabulations, CRLF, ou tout autre(s) caractère(s) considéré(s) comme séparateurs, ce qui explique sans doute le décalage observé.
    Si vous travaillez vraiment avec MySQL, lancez votre requête avec MySQL Workbench, il vous permet de sortir un fichier XML au format feuille excel, directement interprétable par excel, plutôt qu'un fichier CSV ou TXT.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut alexano211.

    Citation Envoyé par Alexano211
    Sauf cette fois-ci, le résultat collé en Ficher Excel format xls, n'est pas bon
    Le format du fichier de sortie ne doit pas être ".xls", mais ".csv". Vous traitez un fichier de type texte !
    C'est ensuite que vous devez charger ce fichier ".csv" dans un fichier Excel, où vous le sauvegarderez dans le format ".xls".

    Ne pas oublier que la fin de ligne sous windows est "CR" + "LF".
    Le caractère séparateur de vos colonnes dans le fichier ".csv" est la virgule".
    Si la virgule est utilisée, par exemple dans vos nombres, on peut la remplacer par le point-virgule qui est la norme française.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2017
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    je vous remercie bien pour votre réponse

    effectivement, le résultat de la requête contient des colonnes contenant des long texte comme :

    1-Adresse
    2-Nom d'entreprise
    3-Commentaire client (ce commentaire est parfois une phrase très longue de plus 100 charactères)

    (Ces 3 colonnes sont affichées bien claire dans la réponse de la requête, c'est-à-dire => dans la colonne "Adresse" l'adresse est marquée dans une seule cellule, pareil pour le commentaire et nom d'entreprise)

    J'ai eu une solution temporaire c'est quand j'enlève les 3 colonnes parmi les sélections de ma requête puis en enregistrant le résultat je n'ai aucun décalage
    Mais le problème est que j'ai besoin les 3 colonnes

    pour enregistrer le réponse de la requête je n'ai que 2 choix :
    1- cliquer sur le carré en haut droite (une fois cliqué toutes les données de la réponse seront sélectionnées) puis je clique droit et il me propose " enregistrer sous"
    puis je peux enregistrer en Excel (format xls ou csv)
    pour les 2 cas (xls et csv) les décalages sont là

    2- cliquer sur le carrée en haut droite, en cliquant droit il propose aussi de copier le résultat vers.
    J'ouvre un ficher Excel (xls ou csv) je colle les données et j'ai aussi le décalage

    Tout ce problème ne m'arrivait pas avant

  7. #7
    Membre confirmé Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Points : 487
    Points
    487
    Par défaut
    L'origine de ce problème étant probablement du à l’existence de caractères parasites dans vos 3 colonnes délinquantes, si vous ne souhaitez pas utiliser un outil comme MySQL Workbench et donc récupérer un fichier TXT ou CSV plutôt qu'un fichier excel 'natif', pourquoi lors de votre extraction, n'appliquer vous pas un traitement de nettoyage de ces caractères parasites en les remplaçant tout simplement par un espace. Voici par exemple une fonction MySQL qui vous facilitera le nettoyage...

    Les caractères typiques à remplacer sont ($UnwelcomeString) : ',;\t\n'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    CREATE FUNCTION `string_cleanUp`												(
     
    $StringToCleanUp				VARCHAR(255)									,
    $UnwelcomeString				VARCHAR(32)									,
    $Joker						VARCHAR(1)
     
    ) RETURNS varchar(255) 				CHARSET 		utf8
    BEGIN
    /*	============================================================================================================================
    **	string_cleanUp()		Nettoyage d'une chaine de caractère (retrait de caractères indésirable'
    **	----------------------------------------------------------------------------------------------------------------------------
    **	TRANSACTIONNELLE		:	NON
    **	CHECK-IN			:	OUI
    **	ETAT				:	Testée
    **	----------------------------------------------------------------------------------------------------------------------------
    **	Auteur				:	IT-DaaS - Isabelle LE TRONG
    **
    **	Versions 			:	1.0	2014-05-11	Version initiale
    **	-----------------------------------------------------------------------------------------------------------------------------
    **	PARAMETRES
    **
    **	$StringToCleanUp		VARCHAR(255)			:	Chaine de caractères à nettoyer
    **	$UnwelcomeString		VARCHAR(32)			:	Caractères indésirables
    **	$Joker				VARCHAR(1)			:	Caractère de substitution (espace, string vide,...)
    ** ==============================================================================================================================
    **
    ** (V) Variables Locales
    */
    DECLARE	$Version			DECIMAL(4,2)		UNSIGNED	DEFAULT	1.0											;
    DECLARE	$UnwelcomeStringSize		TINYINT(5)		UNSIGNED													;
    DECLARE	$UnwelcomeStringIndex		TINYINT(5)																;
    DECLARE	$String				VARCHAR(255)																;
    /*
    ** (H) HANDLERs
    */
    DECLARE	EXIT	HANDLER	FOR SQLEXCEPTION	
    BEGIN
    	SET	$String					=	NULL														;
    	RETURN	$String																				;
    END																															;
    /*		
    **	(0)		Set internal datas
    */
    SET			$UnwelcomeStringSize		=	CHAR_LENGTH($UnwelcomeString)															;	
    SET			$UnwelcomeStringIndex		=	$UnwelcomeStringSize																;
    SET			$String				=	$StringToCleanUp																;
    /*
    **	(1)		Cleanup String
    */
    WHILE		($UnwelcomeStringIndex	>	0)
    	DO		SET	$String			=	REPLACE($String, SUBSTRING($UnwelcomeString, $UnwelcomeStringIndex,1), $Joker)									;
    			SET	$UnwelcomeStringIndex	=	$UnwelcomeStringIndex		-	1													;
    	END WHILE																												;
     
    /*
    **	(EXIT)
    */
    RETURN		$String																											;
    END$$

Discussions similaires

  1. enregistrer le résultat d'une requête dans une variable
    Par veriecherie dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/07/2008, 14h17
  2. Réaliser une macro qui enregistre le résultat d'une requête
    Par boulette85 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/02/2007, 18h36
  3. enregistrer le résultat d'une requête comme table, comment fait-on ?
    Par Monbasinstinct dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/02/2007, 16h21
  4. Enregistrer le résultat d'une requête dans un fichier Excel
    Par Isa31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 14h31
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo