Đang tải dữ liệu...
ParkOur Việt
Welcome to:
Visual Studio Việt
 Bản tin | Bài viết | Thư viện | Diễn đàn | Giới thiệu | Liên hệ | Tìm kiếm 
Trưng cầu ý kiến
Khi xây dựng ứng dụng trên .NET, bạn thích và hay thường sử dụng ngôn ngữ lập trình nào?
 
Tìm kiếm
Tìm kiếm nâng cao
Thống kê
Số người truy cập: 3.505.915
Số người trực tuyến: 79
Trong đó có 3 thành viên: trinhsatmang, jackiechan987, nguyen tan khai
Trang chủ .NET Việt Nam  >  Bài viết  >  Theo chủ đề  >  CSDL & ADO.NET

Import text data to Sql Server

Internet or Some Document   
12:29' AM - Thứ sáu, 09/05/2008
Một cách rát hay để bạn có thể Import data vào 1 table trong DB của SQL Server từ một file
text với định dạng giá trị theo field terminator: ‘,’,'\t’,'\n’,… Thông thường bạn hay dùng Code
programing language như C#, VB, … để giải quyết nhưng với lượng dữ liệu lớn và cấu hình
máy không phải mạnh bạn sẽ nhìn thấy rõ impact của việc dùng nó đến performance thế nào
ngay. Vì vậy tốt nhất bạn sẽ dùng cách import data bằng ngay t-sql sẽ có performance cao
hơn và dễ dàng customize hơn. Ví dụ sau sẽ cho bạn thấy điều này nhé :D

1. Bạn phải có 1 table để chứa dữ liệu import theo cấu trúc mong muốn.

USE DataCentral; GO CREATE TABLE Portfolio (
Col1 smallint,
Col2 nvarchar(50),
Col3 nvarchar(50),
Col4 nvarchar(50) );

GO

2. Tạo dữ liệu mẫu cho bạn trong file text. Chú ý field format dùng ký tự , or tab

10,Field2,Field3,Field4
15,Field2,Field3,Field4
46,Field2,Field3,Field4
58,Field2,Field3,Field4

3. Tạo format file của các field ứng với của table theo định dạng xml.
Chú ý: bạn sẽ tạo file xml này bằng bcp để generate theo câu lệnh sau (trong Windows command prompt):
bcp DataCentral..Portfolio in C:\myPortfolioFile-c.Dat -f C:\myPortfolioFile.Xml -T

<?xml version="1.0"?>
<BCPFORMAT xmlns=http://schemas.microsoft.com/sqlserver/2004/bulkload/formatxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>

4. Tạo SP or Function để viết lệnh sau cho import.
USE DataCentral; DELETE Portfolio; -- only delete row. GO
INSERT INTO Portfolio
SELECT * FROM OPENROWSET(BULK 'C:\myPortfolioFile-c.Dat',FORMATFILE='C:\myPortfolioFile.Xml') as p1 ;
GO
SELECT * FROM Portfolio; GO

Như vậy bạn đã import xong dư liệu từ 1 file text vào DB nhanh chóng hơn nhiều đấy.
Chú ý: Nếu muốn động hơn bạn hãy xem xét kỹ hơn sẽ thấy ta
nên improve đoạn code trên ở điểm nào để bạn có thể dùng nhé.
Số lượt đọc:  398  -  Cập nhật lần cuối:  09/05/2008 12:29:31 AM
Bài mới:  
Bài đã đăng:
Using ADO.NET
06/03/2007
 Trang chủ | Giới thiệu | Liên hệ BQT | Tìm kiếm