집 >데이터 베이스 >MySQL 튜토리얼 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!