1

GV Phi Loan - Khoa CNTT – HUI

Nội dung

• Lệnh BCP • Lệnh BULK INSERT • Import And Export Wizard • Project SSIS

GV Phi Loan - Khoa CNTT – HUI 2

Nhập xuất dữ liệu

• SQL Server cung cấp nhiều tools thực

hiện việc copy hàng loạt hay nhập/xuất dữ liệu. – Lệnh BCP – Lệnh BULK INSERT – Dùng lệnh SELECT INTO – Dùng chức năng Import And Export Wizard – Project SSIS

GV Phi Loan - Khoa CNTT – HUI 3

BCP (Bulk Copy Program)

• Là 1 tiện ích (utility) mà người dùng có thể

thực hiện từ dấu nhắc lệnh.

• Được dùng để copy dữ liệu từ SQL server

thành 1 file của hệ điều hành hay ngược lại. • Rất thường hay dùng để chuyển 1 lượng lớn dữ liệu vào các bảng của SQL server từ các chương trình khác như từ các DBMS khác

GV Phi Loan - Khoa CNTT – HUI 4

BCP (Bulk Copy Program)

GV Phi Loan - Khoa CNTT – HUI 5

Tiện ích BCP

• Dữ liệu chuyển từ nguồn bên ngoài vào

database của SQL server được gọi là BCP IN (còn được gọi là importing)

• Nếu dữ liệu được chuyển từ SQL Server ra nguồn bên ngoài được gọi là BCP OUT (còn được gọi là exporting). Nguồn ngoài phải là file văn bản (flat file).

GV Phi Loan - Khoa CNTT – HUI 6

Tiện ích BCP

• Để nhập dữ liệu từ ngoài vào 1 bảng:

– Dùng file định dạng sẵn cho bảng đó – Hiểu rõ cấu trúc của bảng và kiểu dữ liệu

cho các cột của bảng.

GV Phi Loan - Khoa CNTT – HUI 7

Các yêu cầu khi thực hiện BCP

• File dữ liệu chứa dữ liệu được nhập vào

cần phải có dạng row/column.

• File dữ liệu nên có ký hiệu kết thúc hàng (row terminator) và kết thúc cột (column terminator) sao cho SQL Server có thể nhận biết được khi truyền dữ liệu.

• Cấu trúc của file dữ liệu và bảng của SQL

Server cần phải đồng nhất.

GV Phi Loan - Khoa CNTT – HUI 8

Cú pháp lệnh BCP

BCP [[database_name.][owner].]table_name {in|out|queryout|format} data_file [-m max_errors] [-f format_file] [-x] [-e err_file] [-F first_row] [-L last_row][-b batch_size] [-n] [-c] [-w] [-N] [-t field_term] [-r row_term] [-i input_file] [-o output_file] [-a packet_size] [-S server_name] [-U login_id] [-P password] [-T]

GV Phi Loan - Khoa CNTT – HUI 9

Cú pháp BCP

• in|out|queryout|format là hướng của lệnh.

– In: copy dữ liệu từ 1 file dữ liệu vào bảng của

CSDL.

– Out: copy dữ liệu từ bảng CSDL vào 1 file dữ liệu. – Queryout: copy dữ liệu từ 1 truy vấn – Format: tạo 1 file định dạng phụ thuộc vào các tùy

chọn (-n, -c, -w, or -N) và k{ hiệu phân cách (delimiters) của bảng. Khi lệnh bcp được thực hiện, dữ liệu sẽ lưu vào file theo định dạng này. Tùy chọn này phải đi kèm cùng với tùy chọn –f

GV Phi Loan - Khoa CNTT – HUI 10

Cú pháp BCP

 data_file là đường dẫn đầy đủ của file dữ

liệu, có thể chứa từ 1 đến 255 ký tự.

 -m max_errors: là số lỗi cực đại có thể xảy ra trong khi thực thi lệnh. Mỗi hàng không thể copy bởi lệnh được tính là 1 lỗi. Mặc định là 10 lỗi.

GV Phi Loan - Khoa CNTT – HUI 11

Cú pháp BCP

• -f format_file : dùng để xác định đường dẫn

đầy đủ của file định dạng. – Nếu -f được dùng cùng với tùy chọn

format, thì format_file được tạo riêng cho bảng hay view. Để tạo file định dạng XML, thì phải xác định thêm tùy chọn –x .

– Nếu –f được dùng với tùy chọn in hay out, -

f yêu cầu file định dạng phải có sẵn.

GV Phi Loan - Khoa CNTT – HUI 12

Cú pháp BCP

 -e err_file là đường dẫn đầy đủ của file lỗi (error

file). File này được dùng để lưu trữ các hàng mà lệnh không thể copy được từ file vào CSDL. Nếu không có tuz chọn này, file lỗi không thể tạo được.

 -b batch_size là số hàng trên 1 batch dữ liệu sẽ được copy. Trong trường hợp bị lỗi, SQL Server sẽ commit hay rolls back giao dịch (transaction) theo từng batch dữ liệu. Mặc định tất cả dữ liệu trong file dữ liệu xác định sẽ được copy thành 1 batch.

GV Phi Loan - Khoa CNTT – HUI 13

Cú pháp BCP

• -F first_row : xác định vị trí hàng đầu tiên

được xuất từ bảng hay nhập vào bảng từ file bên ngoài. Mặc định là hàng đầu tiên của file hay bảng là 1.

• -L last_row : xác định vị trí hàng cuối cùng cần

sao chép.

• first_row, last_row có thể là 1 số nguyên

dương có thể lên đến 2^63-1.

GV Phi Loan - Khoa CNTT – HUI 14

Cú pháp BCP

• -n (native) copy các kiểu dữ liệu gốc của chính

database.

• -c dùng kiểu dữ liệu character. Mỗi trường được lưu dưới dạng char không dùng prefixes , với \t như k{ hiệu phân cách trường, và \r\n (newline character) như k{ hiệu kết thúc hàng.

• -N dùng kiểu dữ liệu gốc cho các dữ liệu không phải là character và dùng kiểu Unicode cho dữ liệu là character.

GV Phi Loan - Khoa CNTT – HUI 15

Cú pháp BCP • -w dùng kiểu k{ tự Unicode (nchar), không prefixes, với \t (tab character) như k{ hiệu phân cách trường (field separator), và \n (newline character) như k{ hiệu kết thúc dòng.

 -t field_term : xác định ký tự kết thúc cột (field

terminator). Mặc định là \t.

 -r row_term: xác định ký tự kết thúc hàng (row

terminator). Mặc định là \n.

 -i input_file: xác định tên của file ngõ vào.  -o output_file: xác định tên của file ngõ ra.

GV Phi Loan - Khoa CNTT – HUI 16

Cú pháp BCP

 -a packet_size: xác định số byte cho 1 gói tin

trên mạng (network packet), có thể có từ 4096 đến 65535 bytes; Mặc định là 4096.

 Kích cỡ gói tin càng lớn thì càng tăng khả năng thực thi của lệnh. Nếu gói tin quá lớn không thể tạo được thì kích cỡ mặc định sẽ được dùng.

GV Phi Loan - Khoa CNTT – HUI 17

Cú pháp BCP

 -S server_name[\instance_name]: xác định điển hình của SQL Server được nối đến. Nếu không dùng tùy chọn này, lệnh bcp kết nối đến điển hình mặc định của SQL Server trên máy tính mặc định. Tùy chọn này được yêu cầu khi thực thi lệnh bcp từ 1 máy tính ở xa trên mạng.

 -U login_id : xác định login ID được dùng để kết

nối tới SQL Server.

GV Phi Loan - Khoa CNTT – HUI 18

Cú pháp BCP

 -P password: xác định passowrd cho login ID.

Nếu không dùng tùy chọn này, bcp sẽ hỏi password khi chạy. Nếu dùng tùy chọn này mà không xác định password thì bcp sẽ dùng password mặc định.

 -T: kết nối SQL server bằng kết nối tin cậy

(trusted connection) của người dùng mạng, không cần dùng –U và -P

GV Phi Loan - Khoa CNTT – HUI 19

Ví dụ

• bcp toyworld.dbo.Toys out “Toy type.txt" -T –

c

Chép dữ liệu từ bảng Toys vào tập tin dạng

text (kết nối tự động –T)

• bcp toyworld.dbo.Toys out “Toy.txt" –Usa –

SPHILOAN-PC -P –c

Chép dữ liệu từ bảng Toys vào tập tin dạng text thông qua kết nối vào SQL server thông qua user sa

GV Phi Loan - Khoa CNTT – HUI 20

Ví dụ

• USE toyworld SELECT * INTO toy2 from Toys where 1=2 bcp toyworld.dbo.toy2 in toy.txt –T –c Chép dữ liệu từ file toy.txt bên ngoài vào bảng

toy2

• Bcp “SELECT vToyName FROM toyworld.dbo.

toys” queryout “ToyName.txt” –T –c

 Chép cột vToyName ra thành file text bên ngoài

GV Phi Loan - Khoa CNTT – HUI 21

Lệnh BULK INSERT

• Được dùng để chuyển hàng loạt dữ liệu từ 1

file bên ngoài vào bảng SQL server

• Lệnh BULK INSERT có thể được thực thi từ

dấu nhắc lệnh hay từ query analyzer.

• Có thể dùng lệnh BULK INSERT để chèn dữ liệu từ 1 hay nhiều nguồn vào bảng SQL Server.

GV Phi Loan - Khoa CNTT – HUI 22

Cú pháp lệnh BULK INSERT

BULK INSERT [ [ 'database_name'.] [ 'owner' ].] {

'table_name' FROM 'data_file' }

[ WITH ( [ BATCHSIZE [ = batch_size ] ] [ [ , ] CHECK_CONSTRAINTS ] [ [ , ] DATAFILETYPE [ = { 'char' | 'native'| 'widechar' | 'widenative' } ] ] [ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ] [ [ , ] FIRSTROW [ = first_row ] ] [ [ , ] LASTROW [ = last_row ] ] [ [ , ] MAXERRORS [ = max_errors ] ] [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ]

)

]

GV Phi Loan - Khoa CNTT – HUI 23

Cú pháp lệnh BULK INSERT

• BATCHSIZE [ = batch_size ] : xác định số hàng trong 1 batch. Mỗi batch được copy vào server như 1 transaction.

• CHECK_CONSTRAINTS: yêu cầu bất kz

constraint trong bảng phải được kiểm tra trong lúc thực thi lệnh. Mặc định lệnh bỏ qua các constraint cua bảng.

GV Phi Loan - Khoa CNTT – HUI 24

Cú pháp lệnh BULK INSERT

• DATAFILETYPE [ = {'char' | 'native' | 'widechar'

| 'widenative' } ]: – Char: file dữ liệu kiểu ký tự – Native: sử dụng kiểu dữ liệu hiện có của

database

– Widechar: file dữ liệu kiểu ký tự Unicode – Widenative: tương tự như native, ngoại trừ các cột char, varchar và text sẽ được lưu trữ theo kiểu Unicode

GV Phi Loan - Khoa CNTT – HUI 25

Cú pháp lệnh BULK INSERT

 FIELDTERMINATOR [ = 'field_terminator' ] : xác định ký tự kết thúc trường (field terminator) cho các file dữ liệu kiểu char và widechar. Mặc định là \t.

 FIRSTROW [ = first_row ]: xác định số của hàng

đầu tiên được copy. Mặc định là 1.

 LASTROW [ = last_row ]: xác định số của hàng cuối cùng được copy. Mặc định là 0 để chỉ hàng cuối cùng của file dữ liệu.

GV Phi Loan - Khoa CNTT – HUI 26

Cú pháp lệnh BULK INSERT

 MAXERRORS [ = max_errors ] : xác định số lỗi cực đại có thể xảy ra trước khi lệnh bulk copy bị hủy bỏ. Mặc định là 10.

 ROWTERMINATOR [ = 'row_terminator' ]: xác định ký tự kết thúc hàng dùng cho file dữ liệu kiểu char và widechar . Mặc định là \n

GV Phi Loan - Khoa CNTT – HUI 27

Ví dụ

BULK INSERT toyworld.dbo.toy2 FROM ‘C:\Users\Phi Loan\toy.txt' WITH ( FIELDTERMINATOR = ‘\t', ROWTERMINATOR =

'\n' )

GV Phi Loan - Khoa CNTT – HUI 28

SSIS package

• Package là đối tượng cốt lõi trong SQL Server Integration Services (SSIS) chứa business logic để quản l{ trình tự xử l{ dữ liệu.

• SSIS dùng để chuyển dữ liệu từ nguồn đến đích

và quản l{ trình tự xử l{ dữ liệu. • Có thể tạo package SSIS theo 2 cách:

– Dùng lệnh SQL Server Import And Export Wizard trong SQL Server Management Studio (SSMS) – Dùng SSIS Designer trong Business Intelligence

Development Studio (BIDS).

GV Phi Loan - Khoa CNTT – HUI 29

SSIS package

• Cho phép chuyển đổi dữ liệu đi và đến từ các

nguồn sau: – NET Framework Data Provider for SQLServer – Flat File Source – Microsoft Access – Microsoft Excel – Microsoft OLE DB Provider for Analysis Services – Microsoft OLE DB Provider for Oracle – Microsoft OLE DB Provider for SQL Server – SQL Server Native Client

GV Phi Loan - Khoa CNTT – HUI 30

Trình tự thực hiện Import and Export Wizard

• Chọn Data Source • Chọn Destination • Chọn dữ liệu cần Import hay Export • Chọn cách thực hiện: trực tiếp hay lưu

lại như SSIS package

GV Phi Loan - Khoa CNTT – HUI 31

Project SSIS trong BIDS

• Package SSIS chứa:

– Business logic: bao gồm các nhiệm vụ như trích dữ liệu, thao tác và biến đổi dữ liệu trước khi chuyển đổi dữ liệu.

– Workflow: chạy 1 thủ tục (stored procedure), chuyển 1 file từ FPT server đến thư mục xác định trên server, hay gửi email khi có lỗi…

– Các kết nối với nguồn dữ liệu (data source) và

đích dữ liệu (data destination)

GV Phi Loan - Khoa CNTT – HUI 32

Khi nào nên dùng SSIS trong BIDS

• Khi package SSIS có nhiều yêu cầu phức

tạp

• Cần kết hợp nhiều package SSIS lại.

GV Phi Loan - Khoa CNTT – HUI 33

34

GV Phi Loan - Khoa CNTT – HUI

Trình tự tạo 1 SSIS

• Tạo Data Source ( tùy chọn) • Tạo kết nối • Tạo các đối tượng Control Flow

GV Phi Loan - Khoa CNTT – HUI 35

Tạo Data Source

• Chứa các chuỗi kết nối trỏ đến file hay

CSDL.

• Là 1 đồi tượng tùy chọn của dự án SSIS,

được dùng khi: – Một số package cần dùng chung 1 CSDL hay

1 kết nối file.

– Cần thay đổi kết nối được dùng trong nhiều

package.

GV Phi Loan - Khoa CNTT – HUI 36

Package Connection Managers

• Connection manager cho phép tạo các loại kết nối khác nhau cho package. – Các thành phần khác nhau trong SSIS có thể kêt nối với đối tượng bên ngoài package (như database, file, hay server)

GV Phi Loan - Khoa CNTT – HUI 37

Tạo kết nối

• Chọn loại kết nối:

– New Connection ( kết nối độc lập) – New Connection From Data Source – New File connection – New Analysis Services Connection – New ADO.NET Connection – New Flat File Connection

GV Phi Loan - Khoa CNTT – HUI 38

Thiết kế package trong SSIS

• Màn hình thiết kế package chứa 4 tab cho phép thực hiện các phần việc khác nhau.

GV Phi Loan - Khoa CNTT – HUI 39

Tab Control flow và Data flow

• Control flow: là cơ chế quản lý thứ tự thực hiện bao gồm control flow tasks, containers, và các ràng buộc

• Data flow trực tiếp liên quan đến việc xử lý và biến đổi dữ liệu từ nguồn đến đích.

GV Phi Loan - Khoa CNTT – HUI 40

Tab Control Flow

• Có ba loại đối tượng control flow :

– Control flow tasks – Control flow containers – Constraints

GV Phi Loan - Khoa CNTT – HUI 41

Control flow task

• Là nơi mà ta xác định package sẽ phải

làm gì: – gửi email, thực hiện lệnh SQL hay copy file

từ FTP server.

• Khi 1 nhiệm vụ control flow hoàn tất thì hoặc thành công (succeeded) hoặc thất bại (failed)

GV Phi Loan - Khoa CNTT – HUI 42

Control flow task

• Dùng control flow để điều khiển việc

thực thi các nhiệm vụ song song hay đặt trước các ràng buộc dựa vào tình trạng hoàn thành của nhiệm vụ.

• Để tạo nhiệm vụ mới: drag biểu tượng từ toolbox vào màn hình của Control Flow

GV Phi Loan - Khoa CNTT – HUI 43

Bốn nhóm biểu tượng của Control Flow

1.

Tasks : những việc mà SSIS có thể làm như thi hành lệnh SQL, chuyển đối tượng từ SQL Server sang Server khác.

3.

4.

2. Maintenance Plan tasks: nhóm nhiệm vụ đặc biệt quản l{ các công việc như kiểm tra tính bảo toàn dữ liệu, xây dựng lại chỉ mục,… Data Flow Task: là nhiệm vụ liên quan đến các thao tác dữ liệu ETL (extract, transform, and load) Containers: là các đối tượng dùng để nhóm các task.

GV Phi Loan - Khoa CNTT – HUI 44

Cấu hình task mới

• Mỗi task đều có 1 editor cho phép thay

đổi cấu hình của task. – Nhấp đôi tại task – hay nhấp phải và chọn lệnh Edit.

GV Phi Loan - Khoa CNTT – HUI 45

46

GV Phi Loan - Khoa CNTT – HUI

Control Flow Container

• Cho phép nhóm các task và sắp xếp sao cho các nhiệm vụ có thể chạy song song, hoặc sắp xếp thứ tự đăng nhập và thực thi các giao dịch (transaction) – Để sử dụng container, drag container từ toolbox vào màn hình của control flow.

GV Phi Loan - Khoa CNTT – HUI 47

Phân loại Container

1. Sequence Container 2. For Loop Container 3. Foreach Loop Container ( thực hiện vòng lặp trên tập các đối tượng như các file trong 1 folder)

GV Phi Loan - Khoa CNTT – HUI 48

Làm việc với biến (variable)

• Các biến được dùng để kết hợp các đối

tượng bằng cách: – Truyền giá trị giữa các task và container – Nhận giá trị từ bên ngoài – Trong các đoạn mã tự tạo

• Biến còn được dùng để audit và đăng

nhập vào package.

GV Phi Loan - Khoa CNTT – HUI 49

Làm việc với biến (variable)

• Để mở cửa số Variable:

SSIS\variable

• Mỗi biến được xác định bởi:

– Name – Scope, – Data type – Và giá trị của biến

GV Phi Loan - Khoa CNTT – HUI 50

Phân loại biến

• System variables • User variables.

GV Phi Loan - Khoa CNTT – HUI 51

Biến hệ thống (System variable)

• Không thể chỉnh sửa được nhưng có thể

tham chiếu đến bên trong task hay container.

• Để xem các biến hệ thống: nhấp vào nút Show System Variables. Trên thanh công cụ Variables.

GV Phi Loan - Khoa CNTT – HUI 52

Biến người dùng (user variable)

• Do người dùng tạo và xác định tùy theo

mục đích sử dụng.

• Ví dụ: trong vòng lặp Foreach, biến người dùng để đếm số lần lặp.

GV Phi Loan - Khoa CNTT – HUI 53

Nhiệm vụ đánh giá dữ liệu Data Profiling Task • Cho phép đánh giá (review) các thực thể của dữ liệu nguồn (source), kiểm tra tính rõ ràng, toàn vẹn của dữ liệu và tìm hiểu cấu trúc dữ liệu, mối quan hệ giữa các cột, cột nào có thể là khóa…. • Bao gồm 2 phần:

– Data Profiling Task : thực hiện việc phân tích

dữ liệu.

– Data Profile Viewer: xem kết quả.

GV Phi Loan - Khoa CNTT – HUI 54

Trình tự thực hiện Data Profiling Task

• B1: tạo kết nối ADO.NET mà nguồn là các

bảng/view cần đánh giá.

• B2: drag biểu tượng Data Profiling task

từ toolbox vào control flow, mở và chỉnh sửa thuộc tính của task. – Cách đơn giản: nhấp nút Quick Profile ngay

trong cửa sổ Data Profiling Task Editor.

GV Phi Loan - Khoa CNTT – HUI 55

Trình tự thực hiện Data Profiling Task

• B3: xác định file chứa kết quả của task (file XML) trong thuộc tính Destination.

• B4: xem kết quả bằng cách mở Data

Profile Viewer (Start\ All Programs\Microsoft SQL Server 2008\ Integration Services\ Data Profile Viewer)

GV Phi Loan - Khoa CNTT – HUI 56

GV Phi Loan - Khoa CNTT – HUI 57

Data Flow Task

• Là 1 trong những task quan trọng nhất, cho phép kiểm soát và biến đổi các dataset. – Hoặc drag biểu tượng Data Flow Task từ toolbox

vào vùng làm việc của tab Control Flow

– Hoặc nhấp vào tab Data Flow

• Có 3 loại đối tượng trong toolbox:

– Data flow source adapters – Data flow transformations – Data flow destination adapters

GV Phi Loan - Khoa CNTT – HUI 58

Phân loại Data flow

• Data Flow Source adapter: chỉ ra cách dữ

liệu được đưa vào hệ thồng.

• Data Flow Transformations : chỉ ra các

cách thay đổi và thao tác dữ liệu.

• Data Flow Destination adapter: chỉ ra nơi

để gửi đến dữ liệu đã biến đổi.

GV Phi Loan - Khoa CNTT – HUI 59

Trình tự thực hiện

• Chọn 1 trong các data Flow Source và xác

định cấu hình cho nguồn đã chọn

• Chọn 1 trong các data Flow Destination và xác định cầu hình cho đích đã chọn • Xác định các phép biến đổi dữ liệu từ

nguồn đến đích.

GV Phi Loan - Khoa CNTT – HUI 60

Data Flow Source

GV Phi Loan - Khoa CNTT – HUI 61

Data Flow Destination

GV Phi Loan - Khoa CNTT – HUI 62

Data Flow Destination

GV Phi Loan - Khoa CNTT – HUI 63

Ví dụ minh họa

GV Phi Loan - Khoa CNTT – HUI 64

Chọn các phép biến đổi (transformation)

• Logical row-level transformations • Multi-input or multi-output transformations • Multi-row transformations • Advanced data -preparation transformations

GV Phi Loan - Khoa CNTT – HUI 65

66

GV Phi Loan - Khoa CNTT – HUI

67

GV Phi Loan - Khoa CNTT – HUI

68

GV Phi Loan - Khoa CNTT – HUI

69

GV Phi Loan - Khoa CNTT – HUI

Data Flow Transformations

GV Phi Loan - Khoa CNTT – HUI 70

Data Flow Transformations

GV Phi Loan - Khoa CNTT – HUI 71