>데이터 베이스 >MySQL 튜토리얼 >SSIS는 어떻게 하면 서로 다른 하위 폴더에서 동일한 이름과 스키마를 가진 여러 텍스트 파일을 단일 데이터베이스 테이블로 효율적으로 가져올 수 있습니까?

SSIS는 어떻게 하면 서로 다른 하위 폴더에서 동일한 이름과 스키마를 가진 여러 텍스트 파일을 단일 데이터베이스 테이블로 효율적으로 가져올 수 있습니까?

DDD
DDD원래의
2024-12-29 11:09:12837검색

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

같은 이름과 스키마를 가진 텍스트 파일 가져오기: SSIS의 하위 폴더 순회

도전 과제: 동일한 이름과 스키마를 가진 여러 텍스트 파일을 SSIS로 가져오기 단일 데이터베이스 테이블은 파일이 별도의 위치에 있는 경우 장애물이 될 수 있습니다. 디렉터리.

해결책: SSIS(SQL Server Integration Services)에서는 Foreach 파일 컨테이너를 사용하여 이 문제를 쉽게 해결할 수 있습니다.

Foreach 파일 컨테이너 :

이 컨테이너는 파일 컬렉션을 반복하여 각 파일에 지정된 작업 세트를 적용합니다. 컨테이너 내에서 "하위 폴더 트래버스" 옵션을 활성화하면 SSIS는 지정된 파일 마스크와 일치하는 모든 파일을 처리하면서 하위 디렉터리로 반복적으로 내려갑니다.

식 적용:

실행 중에 플랫 파일 연결 관리자의 ConnectionString 속성을 동적으로 수정하려면 식을 활용합니다. 현재 파일 이름의 값을 ConnectionString 표현식에 할당합니다. 이렇게 하면 컨테이너가 파일을 반복할 때 파일 소스가 변경됩니다.

변수 할당:

Foreach 파일 컨테이너 내에서 현재 파일을 나타내는 변수를 만듭니다. 이를 통해 후속 작업에서 파일 경로에 액세스하고 현재 처리 중인 파일을 기반으로 필요한 작업을 실행할 수 있습니다.

데이터 흐름 작업:

컨테이너의 각 반복 내에서 가져온 데이터를 처리하기 위한 데이터 흐름 작업을 포함합니다. 이 작업은 파일을 읽는 플랫 파일 원본, 입력 행 수를 계산하는 행 개수 변환, 데이터를 대상 테이블에 로드하는 OLE DB 대상으로 구성됩니다.

예제 코드:

아래는 솔루션을 구현하기 위한 더 자세한 코드 예제입니다.

<!-- 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();
        }
    }
}

위 C# 코드는 소스 데이터 디렉터리에서 지정된 확장자를 가진 모든 파일을 반복적으로 검색하여 대상 데이터베이스 테이블에 삽입하는 시스템 수준 기능을 사용하는 대체 접근 방식을 보여줍니다.

위 내용은 SSIS는 어떻게 하면 서로 다른 하위 폴더에서 동일한 이름과 스키마를 가진 여러 텍스트 파일을 단일 데이터베이스 테이블로 효율적으로 가져올 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.