Question

J'essaie d'importer une colonne de dates d'une feuille de calcul Excel 2003 dans SQL Server 2005 à l'aide de SSIS. Je suis au Royaume-Uni alors je veux des dates au format jj / mm / aaaa.

Malheureusement, la colonne de la feuille de calcul contient une combinaison de dates stockées sous forme de chaînes dans jj / MM / aaaa (avec la mise en forme Excel 'générale'), ainsi que des dates utilisant la mise en forme Excel 'Date' jj / MM / aaaa (avec les paramètres régionaux). 'Royaume Uni Anglais)').

C’est ainsi que les choses se passent et je ne peux pas espérer que les utilisateurs puissent résoudre ce problème eux-mêmes.

Lorsque vous consultez la feuille de calcul, toutes les dates sont visuellement correctes, c'est-à-dire jj / mm / aaaa.

J'essaie d'importer les valeurs dans une colonne varchar d'une table de stockage de la base de données. Ensuite, j'exécute une procédure stockée qui copie ces valeurs dans la table appropriée contenant une colonne datetime.

Le problème est que les dates stockées dans la feuille de calcul et utilisant le format de date sont importées sous forme de MM / jj / aaaa dans SQL Server et que les dates stockées sous forme de chaînes sont importées sous le format jj / MM / aaaa. J'ai IMEX = 1 dans la chaîne de connexion.

Le fait d'avoir des dates utilisant les deux formats dans la même colonne varchar pose évidemment un problème lorsque j'essaie de le placer dans une colonne datetime, d'où la

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

ne servent à rien.

Quelqu'un sait-il pourquoi le package SSIS importerait les dates apparemment correctes de la feuille de calcul Excel dans SQL Server en tant que MM / jj / aaaa?

Est-il possible de forcer le package SSIS à importer les dates jj / mm / aaaa qui fonctionneront avec cette combinaison de dates sous forme de chaînes et de cellules auxquelles le formatage de date est appliqué?

Avez-vous d'autres idées?!

Merci beaucoup,

Anthony

Était-ce utile?

La solution

Je pense que vous avez répondu à votre propre question. L'importation de cellules formatées en date est traitée comme une date et les autres comme une chaîne. Le réglage de la date du serveur SQL est peut-être MM / jj / aaaa et donc la conversion.

Pourquoi n'essayez-vous pas d'ajouter une étape de conversion de données dans votre package SSIS et de convertir chaque élément de la colonne en un seul format: date / heure ou chaîne. Ensuite, je suis sûr que SQL Server les traitera tous de la même manière.

Raj

Autres conseils

Ce qui a fonctionné pour moi a été d'ajouter IMEX = 1 à la chaîne de connexion Excel.

Cela ressemblera à ceci:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top