Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 10h30   #1
Invité régulier
 
Homme
Sopotel
Inscription : juillet 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Sopotel
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 33
Points : 5
Points : 5
Par défaut problème type de donnée heure et date

Bonjour j'ai un petit problème avec ma table, créer sur sql server 2008.
Petite explication: j'ai des fichiers csv que je veux extraire dans ma base de donnée, j'utilise SSIS.
Dans ce csv, j'ai une date et heure : 2011.06.02 01:06:08.99 et je sépare ma date et mon heure dans 2 colonnes. Lors de l'extraction de mes données vers ma base sql server, j'obtiens des valeurs nulles dans mes 2 colonnes date et heure.

Je ne sais pas,si cela viens d'un mauvais paramétrage de mon FLAT FILE ou de SQL SERVER 2008.

Voici mon code :

Code :
1
2
3
4
5
 
CREATE TABLE [dbo].[MisServer](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[datefichier] [date]  NULL,
	[timer] [time]  NULL,
nathantahiti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 11h21   #2
Membre régulier
 
Inscription : décembre 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 64
Points : 87
Points : 87
Bonjour,

A mon avis, si tu veux une réponse, il faut donner plus de précisions :

Au minimum :

un extrait du fichier csv
description du package pour l'import
les logs et messages d'erreurs ou warning

Cordialement
semaphore1984 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 11h38   #3
Invité régulier
 
Homme
Sopotel
Inscription : juillet 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Sopotel
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 33
Points : 5
Points : 5
voici un extrait de mon fichier csv:

Citation:
2011.06.02 01:06:05.45,EDS2 3A2-1711,BagSc,,,,,
2011.06.02 01:06:07.06,EDS2 3A2-1711,TagIn,NAFZ2014856,,,,
2011.06.02 01:06:08.81,EDS2 3A2-1711,MfDec,NAFZ2014856,R,,,
2011.06.02 01:06:08.82,EDS2 3A2-1711,SendB,NAFZ2014856,50.2.4.3,960,R,
2011.06.02 01:06:09.06,EDS2 3A2-1711,SentB,NAFZ2014856,50.2.4.3,,,
2011.06.02 01:06:08.99,PO-2A-10G-3,WsRcv,NAFZ2014856,711,960,0,
Images attachées
Type de fichier : png heure.png (75,5 Ko, 3 affichages)
nathantahiti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 11h47   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par nathantahiti Voir le message
Dans ce csv, j'ai une date et heure : 2011.06.02 01:06:08.99 et je sépare ma date et mon heure dans 2 colonnes.
pour quelle raison ? pourquoi ne pas stocker dans une seule colonne en DATETIME2(2) ?

Ce serait plus simple, en plus d’économiser 2 octets !
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 12h13   #5
Invité régulier
 
Homme
Sopotel
Inscription : juillet 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Sopotel
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 33
Points : 5
Points : 5
Citation:

pour quelle raison ? pourquoi ne pas stocker dans une seule colonne en DATETIME2(2) ?

Ce serait plus simple, en plus d’économiser 2 octets !
Effectivement cela aurait été plus simple avec un DATETIME , mais je dois absolument avoir une colonne date et heure. C'est pour faire des rapports, je veux séparé les 2 pour faire des calculs avec macolonne heure.

Dans ma base je voudrais avoir:
Citation:
2011.06.02 |00:01:19.60|EDS2 3A2-1711 |50.19.7.187|00:01:21.20| NAFZ2014851|00:01:23.10 |R|00:01:23.32|PO-2A-10G-3|50.2.4.3| 00:01:23.76 |00:01:25.38|R|
En rouge tu as toutes les heures qui sont importantes pour mon rapport.
En gros des données qui sont sur plusieurs lignes dans mon csv, je les insère sur une seule ligne.
nathantahiti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h43   #6
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par nathantahiti Voir le message
... pour faire des calculs avec macolonne heure.
cela n’empêche pas d'extraire la partie heure très facilement :

Code SQL :
1
2
3
4
5
6
 
declare @d datetime2(2) = '2011.06.02 01:06:08.99'
 
SELECT CAST(@d AS TIME)
 
-- 01:06:08.9900000
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 00h44   #7
Membre régulier
 
Inscription : décembre 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 64
Points : 87
Points : 87
Bonjour,

Indépendamment de cette séparation de date et heure (aieuu a raison), ton log montre une erreur sur le champ datefichier, donc c'est normal que tu n'aie rien.

A mon avis, tu devrait mettre une virgule dans le fichier csv entre la date et l'heure, et changer le délimiteur de date fichier en mettant virgule.

A moins qu'il suffise de mettre un délimiteur "espace" : on ne voit rien dans la case délimiteur, mais il me semble que c'est plus propre de mettre le même délimiteur pour tous les champs d'un fichier csv.

Essaye comme ça, et tu pourra toujours peaufiner ensuite.

Cordialement
semaphore1984 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 05h04   #8
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Citation:
cette séparation de date et heure (aieuu a raison)
Pas forcément si nathantahiti veut effectuer des calculs d'agrégats entre des heure spécifiques ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 11h37   #9
Invité régulier
 
Homme
Sopotel
Inscription : juillet 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Sopotel
Secteur : Enseignement

Informations forums :
Inscription : juillet 2011
Messages : 33
Points : 5
Points : 5
Bonjour merci de vos réponses, j'essaye de faire ce que aieeeuuuuu ma conseillé de faire:
Citation:
pour quelle raison ? pourquoi ne pas stocker dans une seule colonne en DATETIME2(2) ?
Ce serait plus simple, en plus d’économiser 2 octets !
mais j'ai toujours des valeurs nulles dans ma table sql server et des erreurs dans mon package SSIS. voir pièces jointes.
Images attachées
Type de fichier : png flat file connection.png (81,9 Ko, 3 affichages)
Type de fichier : png sql serverdate.png (35,2 Ko, 3 affichages)
nathantahiti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h49.


 
 
 
 
Partenaires

Hébergement Web