Probleme de virgule [Résolu]

colonelblondass
Messages postés
12
Date d'inscription
jeudi 30 juin 2011
Dernière intervention
22 février 2012
- 8 nov. 2011 à 10:20 - Dernière réponse : dbashell
Messages postés
3
Date d'inscription
dimanche 27 novembre 2011
Dernière intervention
27 novembre 2011
- 27 nov. 2011 à 11:59
Bonjour à vous Forum,

J'ai un énorme problème en SQL.

J'ai une table avec plus de 21 millions d'enregistrements et en l'important, la colonne avec la pondération a eu un problème : les virgules ont disparu (ce qui veut dire qu'à la place d'avoir "2.452" j'ai "2452.0" .

Je suis sur SQL server et j'ai mis ma colonne en float.

Puis-je faire quelque chose d'autre que me retaper l'importation qui a duré très longtemps ?

Merci à vous,

Cordialement,

ColonelBlondass
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 8 nov. 2011 à 11:05
3
Merci
Bonjour,

Tu as importé ca à partir de quel fichier ?

Tu devrais pouvoir t'en tirer avec des UPDATE mais je ne peux pas t'en dire plus si tu ne me donnes pas plus d'informations.

En règle générale, quand tu as une table énorme, essaye d'abord de tester les modifs sur un petit échantillon.

Là tu peux toujours créer une autre table en ne sélectionnant que 200 lignes et voir comment tu peux t'en sortir avec les update.

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 8 nov. 2011 à 11:32
3
Merci
Voilà, il suffit que tu créé un fichier decoupe.vbs et que tu colles ca dedans :

nom_fichier_entree = "D:\fichier.txt"
nom_fichier_sortie = "D:\res.txt"

Dim fichierSortie
Dim fichierEntree
Set fichierSortie = CreateObject("Scripting.FileSystemObject").OpenTextFile(nom_fichier_sortie, 2, True)
Set fichierEntree = CreateObject("Scripting.FileSystemObject").OpenTextFile(nom_fichier_entree, 1, False)
Dim compteur
Dim ligne

compteur=0
Do While fichierEntree.AtEndOfStream = False And compteur < 100
ligne = fichierEntree.ReadLine
fichierSortie.write(ligne)
fichierSortie.writeBlankLines 1
compteur=compteur+1
Loop
fichierEntree.Close
fichierSortie.Close


Ensuite, tu modifie le code pour donner le chemin vers ton fichier à découper (nom_fichier_entree) et le chemin vers le resultat (nom_fichier_sortie).

Avec ce code, tu pourras découper les 100 premieres lignes de ton fichier et voir à quoi elles ressemblent.

Ensuite donne moi les 10 premières lignes si tu as des soucis

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Julien39
colonelblondass
Messages postés
12
Date d'inscription
jeudi 30 juin 2011
Dernière intervention
22 février 2012
- 8 nov. 2011 à 11:09
0
Merci
Merci Julien,

J'ai bien testé avec des update sur des morceau de ma table, mais je galère.

J'ai importé un fichier txt de plusieurs go, je ne peux ni l'ouvrir avec bloc-notes, ni avec rien de ma connaissance si ce n'est SQL-server.
Commenter la réponse de colonelblondass
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 8 nov. 2011 à 11:13
0
Merci
Tu travailles sur un poste de travail windows, unix ou linux ?

Je vais te donner un truc qui permet de fractionner ton fichier.
Commenter la réponse de cs_Julien39
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 8 nov. 2011 à 11:29
0
Merci
Avec SQL server, c'est forecement windows, attend une seconde, je te bidouille un code.
Commenter la réponse de cs_Julien39
colonelblondass
Messages postés
12
Date d'inscription
jeudi 30 juin 2011
Dernière intervention
22 février 2012
- 8 nov. 2011 à 11:50
0
Merci
J'ai vu mon problème, j'ai exporté la table en format texte, et j'ai découvert ceci :
sur le fichier importer, le séparateur est ";" et les décimales ","
sur le fichier exporter, le séparateur est "," et il n'y a pas de décimales.

J'ai du mal importer mon fichier.

Vu que quand j'avais 3.154 c'est devenu 3154, si je divise toute ma colonne pas 1000, mes chiffres redeviennent bons. (merci à un membre d'un autre forum).

Ton code pour couper les fichiers est excellent, il va bien me servir par la suite.

Merci beaucoup.

Amitiés,

Colonel Blondass
Commenter la réponse de colonelblondass
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 8 nov. 2011 à 13:12
0
Merci
Attention, cette solution n'est valable que si tu n'as que trois et seulement trois chiffres après la virgule.

Par exemple 3,154 et 31,54 pourraient être devenus 3154. Comment les différencient tu ?

Si tu as toujours 3 chiffres, c'est bon.

C'est ce genre de particularité sur le fichier que j'aurais bien aimé voir si tu m'avais donné quelques lignes en exemples.

Si tu ne veux pas que ca traine sur internet, je supprimerai le message après.
Commenter la réponse de cs_Julien39
dbashell
Messages postés
3
Date d'inscription
dimanche 27 novembre 2011
Dernière intervention
27 novembre 2011
- 27 nov. 2011 à 11:59
0
Merci
Salut les gars,
juste pour votre culture (et peut-être pour l'avenir), ce n'ai pas parce que SQL server tourne forcement sous windows que vous ne pouvez pas scripter depuis un bon vieux linux !!!
Il vous suffit d'installer FreeTds (sous Linux ou autre) qui est un client tds donc compatible SQL server et Sybase et le tour est joué ...
Pour l'installer, vous pouvez utiliser ce post qui est très bien fait "install freetds"
A partir de là, vous bénéficier de toute la puissance des outils "unix like" comme le shell par exemple.

Un bon script pour ne pas faire deux fois la même chose ...
Commenter la réponse de dbashell

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.