아마도이 작업을 수행하는 가장 직접적인 방법은 고정 너비 플랫 파일을 데이터 원본으로 사용하여 SSIS 패키지를 만드는 것입니다. 귀하의 목적지를 최종 테이블과는 다른 것으로 설정합니다 (즉, "rawdata"스키마 또는 "rawdata"라는 별도의 데이터베이스 사용). 이 초기 매핑을 사용하여 제안 된 데이터 형식이있는 테이블을 만들 수 있습니다 (단, 실제로 데이터를 알고 있어야합니다).
SSIS
이 작업을 완료하면, 당신은 SSIS에서 Foreach 루프 컨테이너를 만들 수있는 이러한 플랫 파일 원본 및 원시 대상이 특정 폴더를 반복. 이 작업이 한 번 수행되는 경우 SQL Server Data Tools를 현재 Visual Studio 2010 설치 (있는 경우)에 설치하거나 설치 관리자가 VS 2010 Shell에 SSDT를 설치하지 않아도 설치할 수 있습니다 . 이것이 일회성이 아니라면 주기적으로 실행되도록 예약 할 수있는 패키지로 배포하기 위해 SSIS 설치에 대한 라이센스를 조사해야합니다.
모두 실패하면 SSMS를 열고 대상 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업, 데이터 가져 오기를 클릭하고 플랫 파일 원본, 고정 너비 대상을 선택하고 소스 매핑을 수행하여 테이블 스키마를 생성 할 수 있습니다 > 100)을 작성한 다음 테이블 작성 스크립트를 생성하면 이러한 열을 작성하는 데 어려움이 있습니다.
그러나 실제로이 세 개의 열만있는 경우 ...
CREATE TABLE schema rawdata AUTHORIZATION <pick an owner here>;
CREATE TABLE rawdata.rawfields (
fieldname varchar(8), -- i'm actually unclear here because
-- the next column's name/purpose is unclear
fieldsize int, -- or other numeric datatype
fieldcomment varchar(255)
);
그러면 C# 또는 PowerShell 스크립트를 작성하여 파일로 디렉터리를 반복 할 수 있습니다. 나는 SQL Server 인스턴스에 대한 연결을 설정했던, 여기에서
C#을
string fieldname, fieldsize, fieldcomments;
var files = System.IO.Directory.GetFiles("path", "*.ext");
foreach (var file in files)
{
var lines = System.IO.File.ReadAllLines(file);
foreach (var line in lines)
{
fieldname = line.Substring(0, 8);
fieldsize = line.Substring(9, 1);
fieldcomments = line.Substring(10, 73);
}
}
매개 변수가 삽입 명령을 생성하고 변수에 데이터를 삽입 :이처럼 보일 것입니다.
대량 삽입
서식 파일 만들기 : (다음
<?xml version="1.0"?>
<BCPFORMAT
xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharFixed" LENGTH="8"/>
<FIELD ID="2" xsi:type="CharFixed" LENGTH="2"/>
<FIELD ID="3" xsi:type="CharFixed" LENGTH="68"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="fieldname" xsi:type="SQLCHAR" />
<COLUMN SOURCE="2" NAME="fieldlength" xsi:type="SQLCHAR" />
<COLUMN SOURCE="3" NAME="fieldcomments" xsi:type="SQLCHAR" />
</ROW>
</BCPFORMAT>
(위로) PowerShell 스크립트 또는 디렉토리에있는 파일을 반복하는 C#을 응용 프로그램을 쓸 수 있으며, 전화를 당신이
bcp <<yourdatabase>>.rawdata.rawfiles in \\path\to\data\file.ext
-f \\path\to\format\file.Xml -T
기타)
를 신뢰할 수있는 연결을 얻을 수 있습니다 가정3210
bcp <<yourdatabase>>.rawdata.rawfiles in \\path\to\data\file.ext
-f \\path\to\format\file.Xml -U username -P password
SSIS를 사용할 수 있습니까? – swasheck
파일에서 어떻게 테이블 이름, 열 데이터 형식, 기본 키 등을 알 수 있습니까? –
테이블 이름을 결과라고해야합니다. 모든 필드는 문자이고 da_ctat는 고유 한 키가 될 수 있습니다. – Nick