Je planifie un package SSIS pour l'exportation de données vers un fichier à plat.
Mais je veux générer des noms de fichiers avec certaines informations de date, telles que foo_20140606.csv
C'est possible?
Merci
Avec l'aide d'expressions, vous pouvez créer une connexion dynamique.
Sélectionnez votre connexion de fichier à plat dans le volet Gestionnaires de connexion. Dans le volet Propriétés, cliquez sur Expression (...). Ensuite, choisissez Propriété ConnectionString dans la liste déroulante et, dans Expression (...), insérez votre expression et évaluez-la.
Expression build -
For day : (DT_STR,4,1252)DAY( DATEADD( "dd", -1, getdate() ))
For month: (DT_STR,4,1252)MONTH( DATEADD( "dd", -1, getdate() ))
For Year: (DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() ))
Exemple d'expression (vous devez modifier selon vos besoins) -
"E:\\Backup\\EmployeeCount_"+(DT_STR,4,1252)DATEPART( "yyyy" , getdate() ) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , getdate() ), 2) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , getdate() ), 2) +".txt"
qui donne E:\Backup\EmployeeCount_20140627.txt
comme valeur.
Remarque: vous avez besoin d'une connexion de fichier à plat fonctionnelle. Créez tout d'abord une connexion de fichier à plat dont la propriété connectionString va ensuite être remplacée automatiquement par expression.
Vous pouvez également suivre ces articles étape par étape.
Sélectionnez votre connexion de fichier dans les gestionnaires de connexion, allez dans les propriétés et cliquez sur (...) à côté des expressions.
Dans l'éditeur, sélectionnez ConnectionString dans la colonne Propriété. Dans la zone de texte Expression, vous pouvez entrer quelque chose comme "rootNameOfFile" + (DT_WSTR, 50) (DT_DBDATE) GETDATE () + ".csv"
Évaluez votre expression pour vous assurer d'obtenir ce que vous attendez, et le tour est joué!
vous pouvez facilement donner le nom de fichier dynamique pour un fichier plat ou csv dans un package SSIS tel que DataFeed_ {yyyyMMdd} .txt, par exemple. DataFeed_20181212.txt. Accédez simplement à la propriété du gestionnaire de connexions de fichiers plats et définissez la valeur de l'expression. Vous pouvez également définir la variable au niveau du package. Cette variable, que vous pouvez utiliser dans l'expression et selon l'environnement, vous permet de définir l'emplacement du dossier à l'aide du fichier de configuration .dtsconfig.
plus de détails @ ssis nom de fichier dynamique pour fichier à plat
Si vous n'avez pas SSDT et ne pouvez donc pas l'éditer avec une interface graphique, voici comment éditer directement le paquet SSIS:
Avant:
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[DestinationConnectionFlatFile]"
DTS:ObjectName="DestinationConnectionFlatFile"
DTS:DTSID="{C69365C4-EF12-4606-980B-E8862EE997A4}"
DTS:CreationName="FLATFILE">
<DTS:ObjectData>
Après:
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[DestinationConnectionFlatFile]"
DTS:CreationName="FLATFILE"
DTS:DTSID="{C69365C4-EF12-4606-980B-E8862EE997A4}"
DTS:ObjectName="DestinationConnectionFlatFile">
<DTS:PropertyExpression
DTS:Name="ConnectionString">"C:\\Exportdir\\Filename_"
+ (DT_WSTR,4)DATEPART("yyyy",GetDate()) +
RIGHT("0" + (DT_WSTR,2)DATEPART("mm",GetDate()) ,2) +
RIGHT("0" + (DT_WSTR,2)DATEPART("dd",GetDate()),2) + "_" +
RIGHT("0" + (DT_WSTR,2)DATEPART("hh",GetDate()),2)+
RIGHT("0" + (DT_WSTR,2)DATEPART("mi",GetDate()),2) + ".csv"
</DTS:PropertyExpression>
<DTS:ObjectData>