[SQLServer 대형 객체] - 파일 시스템에서 파일 마이그레이션
5071 단어 sqlserver
파일 시스템에서 FileTable로 파일 마이그레이션
FileTable에 파일 대량 로드
FileTable에 파일을 대량 로드하는 방법
블로그[SQLServer 대규모] - FileTable 초기 환경를 통해 데이터베이스에 파일을 불러오고 이 파일들을 보고 접근할 수 있습니다.
파일을 FileTable에 불러옵니다. 도구 xcopy 또는 robocopy를 사용하거나, 스크립트 (예: PowerShell) 나 프로그램을 직접 작성하여 FileTable에 파일을 복사할 수 있습니다.
이제 파일 마이그레이션을 살펴보겠습니다.
파일 시스템에서 FileTable로 파일 마이그레이션
마이그레이션 파일 조건
파일이 파일 시스템에 저장됨
SQL Server의 메타 데이터 테이블에는 파일에 대한 포인터가 포함되어 있습니다.
실행 전제
파일을 FileTable로 이동하려면 각 파일의 원래 UNC 경로를 FileTable의 UNC 경로로 대체해야 합니다.
현재 FileTable PhotoMetadata에 이미지 데이터가 포함되어 있다고 가정해 보겠습니다.이 테이블에는 실행을 포함하는 varchar (512) 형식의 UNC 경로 열이 있습니다.jpg 파일의 실제 경로입니다.
장.jpg와 해당 디렉토리 구조가 FileT의 루트 디렉토리로 복사됩니다.
실행
코드를 사용하여 PhotoMetadata의 메타데이터를 수정하려면 다음과 같이 하십시오.
1: -- PhotoMetadata。
2: ALTER TABLE PhotoMetadata ADD pathlocator hierarchyid;
3:
4: -- 。
5: DECLARE @UNCPathRoot varchar(100) = '\\RemoteShare\Photographs';
6:
7: -- FileTable 。
8: DECLARE @FileTableRoot varchar(1000);
9: SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
10:
11: -- PhotoMetadata。
12:
13: -- FileTable UNC 。
14: UPDATE PhotoMetadata
15: SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
16:
17: -- FileTable pathlocator 。
18: UPDATE PhotoMetadata
19: SET pathlocator = GetPathLocator(UNCPath);
<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->
FileTable에 파일 대량 로드
대량 작업의 경우 FileTable는 다른 테이블과 기본적으로 같지만 주의해야 할 부분이 있습니다.
FileTable에는 파일의 무결성 및 디렉토리 공간을 유지 관리하기 위한 시스템 정의 구속이 있습니다.이러한 구속조건은 데이터가 파일 테이블로 대량 로드되는지 확인합니다.일부 대량의 삽입 작업은 표의 제약을 무시할 수 있기 때문에 다음은 강제로 요구된다.
제약조건을 적용한 벌크 로드 작업은 다음과 같이 다른 테이블과 마찬가지로 FileTable에서 사용할 수 있습니다.
bcp(CHECK)CONSTRAINTS 자문
BULK INSERT(CHECK 포함)CONSTRAINTS 자문
INSERT INTO...SELECT* FROM OPENROWSET(BULK...) IGNORE 없음CONSTRAINTS 자문
다음과 같이 필더블 시스템에서 정의한 구속이 해제되지 않은 경우 비강제 구속에 대한 대량 로드 작업이 실패합니다.
bcp CHECK 없음CONSTRAINTS 자문
BULK INSERT에 CHECK 없음CONSTRAINTS 자문
INSERT INTO...SELECT* FROM OPENROWSET(BULK...) IGNORECONSTRAINTS 자문
FileTable에 파일을 대량 로드하는 방법
FileTable에 파일을 대량 로드하는 방법은 다음과 같습니다.
bcp
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문그런 다음 FileTable 네임스페이스를 다시 활성화합니다.
BULK INSERT
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문FileTable 네임스페이스를 다시 활성화합니다.
INSERT INTO … SELECT * FROM OPENROWSET(BULK …)
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문FileTable 네임스페이스를 다시 활성화합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.