- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[SQLSERVER] Hướng dẫn sử dụng BCP để import và export dữ liệu hàng loạt trong SQL
Bài viết hôm nay, mình xin giới thiệu với các bạn về công cụ BCP trong sqlserver. Dùng để import và export dữ liệu hàng loạt trong sqlserver.
Vậy BCP là gì? Cú pháp và cách sử dụng như thế nào trong SQL SERVER?
BCP là 1 tiện ích để thực hiện việc sao chép dữ liệu hàng loạt được tối ưu hóa để chuyên trị cho các dữ liệu có qui mô lớn. BCP có thể:
- Sao chép dữ liệu từ SQL Server ra dữ liệu đích đến có định dạng do người dùng tùy biến (như dạng văn bản phân cách bằng tab, hay bằng dấu phẩy, dạng file excel,...)
- Sao chép ngược lại dữ liệu từ các nguồn bên ngoài vào lại trong SQL Server
Cú pháp BCP trong SQL SERVER:
bcp [database_name.] schema.{table_name | view_name | "query"}
{in data_file | out data_file | queryout data_file | format nul}
Trong đó các có các tham số quan trọng sau đây
- [database_name.] schema.{table_name | view_name | "query"} để trỏ tới bảng, view hoặc câu truy vấn lấy dữ liệu nguồn trong tình huống sử dụng BCP để xuất dữ liệu ra (out) hoặc chỉ định nơi đổ dữ liệu vào trong tình huống sử dụng BCP để nạp dữ liệu vào (in)
- Từ khóa IN hoặc OUT để quyết định chiều nhập hay xuất dữ liệu
- Đường dẫn tuyệt đối tới file bên ngoài chứa dữ liệu mà BCP sẽ kết xuất ra hoặc file dữ liệu chứa dữ liệu cần lấy để nạp vào SQL Server,
Xét ví dụ cụ thể sau:
bcp AdventureWorks2012.HumanResources.Employee out C:Employee.txt -t -T
Câu lệnh này sẽ yêu cầu SQL Server thực hiện việc lấy toàn bộ dữ liệu trong bảng Employee của schema HumanResouces thuộc CSDL AdventureWorks2012 ra chứa vào trong file văn bản có tên Employee.txt đặt ở thư mục gốc ổ đĩa C của hệ thống.
tham số -t mang ý nghĩa là các ô dữ liệu trong bảng sẽ được phân cách với nhau bằng tab (mặc định) trong file văn bản kết xuất ra. Nếu muốn sử dụng dấy phẩy để phân tách các thành phần dữ liệu chúng ta thay tham số "-t" nêu trên bằng tham số "-t,"
tham số -T mang ý nghĩa câu lệnh BCP này khi chạy sẽ thiết lập 1 kết nối tin cậy (trusted connection) tới server sử dụng hình thức xác thực dựa trên thông tin xác thực của hệ điều hành (Windows Authentication). Nếu muốn xác thực bằng hình thức dùng SQL Server Authentication thì cần thay tham số -T bằng cặp tham số:
- -U đi kèm theo username dùng để đăng nhập SQL Server
- và tham số -P dùng để chỉ định password xác thực người dùng tương ứng
Ngoài ra nếu chúng ta đang thực hiện câu lệnh này trên máy Client (không phải máy Server) thì cần chỉ định rõ tên Server sau tham số -S
Đặc biệt, đối các với tình huống có sử dụng Unicode chúng ta cần chỉ định thêm 1 tham số quan trọng là -w để hệ thống thực hiện thao tác sao chép dữ liệu theo định dạng hỗ trợ unicode từ hoặc vào các trường có kiểu dữ liệu như nchar, nvarchar,...
Hệ thống sẽ tự động hỏi, nếu chúng ta chỉ định thiếu tham số như hỏi nhập password nếu chúng ta truyền có -U mà không có -P, hay hỏi sử dụng phân cách là gì nếu không có tham số -t.
Nếu thực hiện trên dữ liệu cở lớn (vài chục ngàn record) chúng ta sẽ dễ dàng đánh giá được hiệu suất tuyệt vời của ứng dụng này bằng các thông tin thống kê hiển thị ngay trên màn hình kết quả như tổng thời gian thực hiện, số lượng dòng chép được trung bình trong 1 đơn vị thời gian,...
Việc nạp dữ liệu từ các file bên ngoài có định dạng cho trước vào trở lại bên trong SQL Server cũng thực hiện hoàn toàn tương tự. Các bạn chỉ cần thay từ khóa OUT bằng từ khóa IN là có thể tận dụng khả năng cực kỳ hữu dụng này của BCP.
HAVE FUN :)