begin process at 2012 05 27 02:27:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Divers

 > 

SQL server 2008, import données CSV


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SQL server 2008, import données CSV

mardi 21 juillet 2009 à 13:43:17 | SQL server 2008, import données CSV

livinho38

Bonjour

je dispose de plusieurs fichiers CSV, pr favoriser les futures requete il esdt interessant de lier les tables en fonctions de date.
Cependant dans mon fichier CSV la date se trouve dans 3 colonnes, jour ,mois,année,
la colonne mois est de la forme suivante: Jan. ; Fév. ; Mars ; ...

j'ai donc créé une table mois contenant 2 colonne: Id_mois ; mois
pour pouvoir faire le lien entre le nom du mois et son numéro.

j'aimerai donc kan je recupere mes données du fichier CSV, transformer le mois en numéro grace à cette table (mais coment?), mais aussi pour facilité les requete en fonction des date, mettre dans une seule colonne jour/mois/année.
est-ce possible et si oui comment?

je vous remercie pour votre aide. je débute en SQL server et je galere bien
Olivier

mardi 21 juillet 2009 à 14:00:55 | Re : SQL server 2008, import données CSV

nhervagault

Administrateur CodeS-SourceS

Salut,

Regardes du coté de SSIS pour faire les modification.

SSIS est l'ETL de sqlserveur fournit à partir de la version standard.

Il faut les outils clients sur ton poste.

Bon dev.

mardi 21 juillet 2009 à 14:07:36 | Re : SQL server 2008, import données CSV

livinho38

oué c ce que je fait
je travail sur SQL Server 2008 version entreprise.

j'essai avec visual studio des procedure mais pour le moment je ne trouv pas comment faire ça
si tu as une idee.;

merci en tt k

mardi 21 juillet 2009 à 14:56:17 | Re : SQL server 2008, import données CSV

nivsql

A ta place je chercherais du coté de la puissante fonction CONVERT et du flag 107 qui vas avec.

Voici un exemple que je viens de faire sur mon serveur de test :

create table DATE_TEST (Jour char(2), mois char(50), année char(4));

mon jeu de test :
05 mai 2008
05 juillet 2008
05 janvier 2008
05 janv 2009

Requete 1 :
select convert(datetime, mois + ' '+ jour + ',' + année, 107) from DATE_TEST;
Resultat 1 me rendant un type DATETIME (plus facile a manipuler ultierieurement) :
2008-05-05 00:00:00.000
2008-07-05 00:00:00.000
2008-01-05 00:00:00.000
2009-01-05 00:00:00.000

Requete 2 :
select convert(varchar,convert(datetime, mois + ' '+ jour + ',' + année, 107),103) from DATE_TEST;
Me rendant un type Varchar :
05/05/2008
05/07/2008
05/01/2008
05/01/2009

Je pense qu'avec ca tu devrais t'en sortir.

mardi 21 juillet 2009 à 16:02:29 | Re : SQL server 2008, import données CSV
mercredi 22 juillet 2009 à 09:49:29 | Re : SQL server 2008, import données CSV

livinho38

Merci de ta réponse,

mais je vois pas trop comment utilisé sa, en fait je réexplique le contexte:
je dispose de plusieurs fichiers CSV, ceux ci dispose tous de date découper en plusieurs colones :
Jour: 25 | Mois: Oct. | Année : 2008 | Trimestre : Q.4 | Semaine calentaire : Semaine 43 | Jour de l'année: 299 |

j'ai alors creer une table Mois contenant 2 colonne : Id_mois : 1 | mois : Janvier

sous studio je recupere un fichier plat (mon csv) je converti les données, je fait une recherche sur la case mois afin de récuperer l'id correspondant,
je sais pas si c'est une bonne méthode, qu'en pensez vous? mais j'obtien bien un mois en int.
maintenna , pour facilité les requete ultérieur , il me faudrait une date au format date JJ/MM/AAAA dans une colonne.
J'ai donc l'idee de creer une table Date qui contient les données cité tout en haut, ET une colonne date du format JJ/MM/AAAA. mais je ne sais pas comment creer et instancier cette colonne
je dois utiliser Studio puisque je dois realiser des pakage qui seront lancer chaque jour.

est-ce clair? est-ce que je part dans la bonne direction? tes requete ci dessus sont elles adaptable ? cela fait beaucoup de question mais j'ai beaucoup de pb ^^
merci bcp d'avance.!

mercredi 22 juillet 2009 à 10:22:04 | Re : SQL server 2008, import données CSV

nivsql

Pour moi tu fais totalement fausse route et tu te complique terriblement la vie.

Un fichier CSV est un fichier normé, typiquement le type de fichier que tu peux inséré dans une table temporaire via la commande BULK INSERT !
Une fois dans ta table temporaire tu peux commencer par nettoyer tes données (en enlevant le . a la fin de l'abreviation du mois, je te laisse chercher par toi meme les fonction de traitement de chaine de caractere)

Une fois ces données propres tu les transforme vial le type de code que je t'ai donné, et tu les insert dans une table définitive sous la forme de ton choix !

Sequence :

Create table #tempCSV (mescolonnes du fichier CSV...)
BULK INSERT #tempCSV FROM FILE='monfichier.csv' WITH ... (description du fichier, séparateur, fin de ligne)

UPDATE #tempCSV SET macolonne1 = fnc(macolonne1), ...(traitement des colonnes)

insert into MaTableDefinitive
select fnc(macolonne1 + macolonne3), ... From #tempCSV;

tu positionne les convert que je t'ai donnée précédement dans le select du dernier insert et tu a une table au petit oignons pour tes utilisateurs.
Tu n'aura fait QUE du sql (pas besoin de SSIS ni de visual studio, juste management studio), ton traitement sera totalement ensembliste (et non iteratif) et tout ca le plus simplement du monde.

mercredi 22 juillet 2009 à 10:26:39 | Re : SQL server 2008, import données CSV

nivsql

J'ai oublier de préciser que pour faciliter les requete utilisateurs il est préférable de stoker les date au format DATETIME (donc pas de format ^^) et de leur présenter les données via une vue sur la table ou la colonne date sera transformer via un convert(varchar, macolonneDate, 103) qui leurs présentera les données au format JJ/MM/AAAA.

mercredi 22 juillet 2009 à 10:53:09 | Re : SQL server 2008, import données CSV

livinho38

d'accord je vais essayer de partir dans se sens, mais cela implique d'avoir autant de base temporaire que de fichier CSV ??

ensuite est-ce possible de realiser tout ça sans passer par des requete isolé mais par visual studio?

mercredi 22 juillet 2009 à 12:06:06 | Re : SQL server 2008, import données CSV

nivsql

Pas des bases mais des tables, et il t'en faut autant que tu a de TYPE de fichier CSV, sinon tu peux importer tous les fichers CSV de meme structure dans une seule table temporaire.

Tu peux bien evidement porter tout ca dans SSIS via Visual Studio et la box "Lancer un lot T-SQL".


1 2 3

Cette discussion est classée dans : données, sql, server, csv, mois


Répondre à ce message

Sujets en rapport avec ce message

liaison de données dans SQL Server [ par titoune76 ] Comment faire dans SQL Server pour créer une vue selectionnant plusieurs champs de plusieurs tables (jusque la pas de pb), ces tables se situant dans Lignes et colonnes [SQL-server] [ par paf le chien ] Bonjour à tous, je vous présente mon petit problème : J'ai des fichiers au formats CSV qui contiennent des données. Je veux stocker ces données dans Réplication SQL Server 2000 [ par white_mage ] Hello tout le monde.... J'ai un gros problème avec une réplication avec fusion sur SQL server 2k. J'espère que quelqu’un pourra m’aider…..J’ai une rép Duplication de données [ par erwan35 ] Bonjour à tous,Je vais mettre en place dans mon entreprise un logiciel dont les données proviendront d'une base de données SQL SERVER EXPRESS 2005.La Sql server utf-8 [ par dirthangel ] Salut a tous je travaille actuellement sur une application Perl , j'utilise comme base de données Sql server 2005 j'ai besoin d'y stocker des données Problème de connexion SQL SERVER 2005 / FREEBOX [ par marcofelipe ] Bonjour,Voila mon problème : J'ai créé une base de données sur SQL SERVER 2005 pour créer une application sur un serveur d'application et pourvoir l'u les sauvegarde de base de données [ par ghano81 ] bonjour jé créer  une base de données en sql server 2005,japplique sur ces tables des operations (ajout ,modification , suppression ) ce qui m'interes Lien entre SQL Server 2005 et MySQL [ par Edohan ] Voilà, je travaille actuellement sur une solution de workflow basée sur une Base de Données SQL Server 2005. J'ai en parallèle des Base de Données so Accès SQL Server - SSPI [ par cuttysark ] Bonjour,L'application est un ERP qui accède à la base de données ACCESS.Suite à une modification de code pour une utilisation possible de la base SQL Comment sauvegarer une base de données en SQL server 2005 Express [ par cybercop ] bonjour jé créer  une base de données en sql server 2005,alors je ne sais pas comment faire sauvegarder la base pour trransferer un autre PC avec la s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales