Phương pháp này tự động xuất tên cột cùng với dữ liệu hàng của bạn bằng BCP.
Tập lệnh ghi một tệp cho các tiêu đề cột (đọc từ INFORMATION_SCHEMA.COLUMNS
table) sau đó nối một tệp khác với dữ liệu bảng.
Kết quả cuối cùng được kết hợp thành TableData.csv
trong đó có tiêu đề và dữ liệu hàng. Chỉ cần thay thế các biến môi trường ở trên cùng để chỉ định Máy chủ, Cơ sở dữ liệu và tên Bảng.
set BCP_EXPORT_SERVER=put_my_server_name_here
set BCP_EXPORT_DB=put_my_db_name_here
set BCP_EXPORT_TABLE=put_my_table_name_here
BCP "DECLARE @colnames VARCHAR(max);SELECT @colnames = COALESCE(@colnames + ',', '') + column_name from %BCP_EXPORT_DB%.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='%BCP_EXPORT_TABLE%'; select @colnames;" queryout HeadersOnly.csv -c -T -S%BCP_EXPORT_SERVER%
BCP %BCP_EXPORT_DB%.dbo.%BCP_EXPORT_TABLE% out TableDataWithoutHeaders.csv -c -t, -T -S%BCP_EXPORT_SERVER%
set BCP_EXPORT_SERVER=
set BCP_EXPORT_DB=
set BCP_EXPORT_TABLE=
copy /b HeadersOnly.csv+TableDataWithoutHeaders.csv TableData.csv
del HeadersOnly.csv
del TableDataWithoutHeaders.csv
Lưu ý rằng nếu bạn cần cung cấp thông tin đăng nhập, hãy thay thế tùy chọn -T bằng -U my_username -P my_password
Phương pháp này có ưu điểm là luôn có tên cột đồng bộ với bảng bằng cách sử dụng INFORMATION_SCHEMA.COLUMNS
. Nhược điểm là nó tạo ra các tệp tạm thời. Microsoft thực sự nên sửa tiện ích bcp để hỗ trợ điều này.
Giải pháp này sử dụng thủ thuật nối hàng SQL từ đây kết hợp với các ý tưởng bcp từ đây