Maison > base de données > tutoriel mysql > Comment SSIS peut-il importer efficacement plusieurs fichiers texte portant le même nom et le même schéma à partir de différents sous-dossiers dans une seule table de base de données ?

Comment SSIS peut-il importer efficacement plusieurs fichiers texte portant le même nom et le même schéma à partir de différents sous-dossiers dans une seule table de base de données ?

DDD
Libérer: 2024-12-29 11:09:12
original
807 Les gens l'ont consulté

How can SSIS efficiently import multiple text files with the same name and schema from different subfolders into a single database table?

Importation de fichiers texte avec le même nom et le même schéma : traversée de sous-dossiers dans SSIS

Défi : Importation de plusieurs fichiers texte avec des noms et des schémas identiques dans une seule table de base de données peut constituer un obstacle lorsque les fichiers résident dans des emplacements distincts. répertoires.

Solution : Dans SQL Server Integration Services (SSIS), vous pouvez utiliser le conteneur de fichiers Foreach pour relever ce défi sans effort.

Conteneur de fichiers Foreach :

Ce conteneur parcourt une collection de fichiers, appliquant un ensemble spécifié de tâches à chacun. En activant l'option « Traverser le sous-dossier » dans le conteneur, SSIS descendra de manière récursive dans les sous-répertoires, traitant tous les fichiers qui correspondent au masque de fichier spécifié.

Application d'expressions :

Pour modifier dynamiquement la propriété ConnectionString du gestionnaire de connexions de fichiers plats pendant l'exécution, exploitez les expressions. Attribuez la valeur du nom de fichier actuel à l'expression ConnectionString. Cela garantit que la source du fichier change à mesure que le conteneur parcourt les fichiers.

Affectation de variable :

Créez une variable pour représenter le fichier actuel dans le conteneur de fichiers Foreach. Cela permet aux tâches suivantes d'accéder au chemin du fichier et d'exécuter les opérations nécessaires en fonction du fichier en cours de traitement.

Tâches de flux de données :

À l'intérieur de chaque itération du conteneur, inclure une tâche Data Flow pour traiter les données importées. Cette tâche consiste en une source de fichier plat, qui lit le fichier, une transformation Row Count pour compter le nombre de lignes d'entrée et une destination OLE DB, qui charge les données dans la table cible.

Exemple de code :

Vous trouverez ci-dessous un exemple de code plus détaillé pour implémenter la solution :

<!-- C# code using System.IO to demonstrate a different approach -->
// Import System.IO for file I/O operations
using System.IO;

// Get the current directory
string currentDirectory = Directory.GetCurrentDirectory();

// Define the source data directory
string sourceDirectory = Path.Combine(currentDirectory, "SSISDATA\SO\TEST");

// Get all files with the specified extension
var files = Directory.GetFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

// Iterate through each file
foreach (string file in files)
{
    // Get the file name without the extension
    string fileName = Path.GetFileNameWithoutExtension(file);

    // Load the data from the file into a data table
    DataTable data = GetDataFromFile(file);

    // Insert the data into the target table
    using (var connection = new SqlConnection("connection string"))
    {
        using (var command = new SqlCommand("INSERT INTO TargetTable (File, Data) VALUES (@File, @Data)", connection))
        {
            command.Parameters.AddWithValue("@File", fileName);
            command.Parameters.AddWithValue("@Data", data);

            connection.Open();
            command.ExecuteNonQuery();
        }
    }
}
Copier après la connexion

Le code C# ci-dessus démontre une approche alternative utilisant des capacités au niveau du système pour récupérer de manière récursive tous les fichiers avec l'extension spécifiée à partir du répertoire de données source et les insérer dans la table de la base de données cible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal