2011-09-12 18 views
20

Tôi có truy vấn trả về tập dữ liệu rất lớn. Tôi không thể sao chép và dán nó vào Excel mà tôi thường làm. Tôi đã thực hiện một số nghiên cứu về cách xuất trực tiếp vào một trang tính Excel. Tôi đang chạy SQL SERVER 2008 trên một máy chủ đang chạy Microsoft Server 2003. Tôi đang cố gắng sử dụng nhà cung cấp dữ liệu Microsoft.Jet.OLEDB.4.0 và Excel 2007. Tôi đã ghép nối với nhau một đoạn mã nhỏ trông như thế này từ những gì tôi đã thấy trong các ví dụ.Xuất dữ liệu truy vấn SQL sang Excel

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') 
SELECT productid, price FROM dbo.product 

Tuy nhiên điều này không làm việc, tôi nhận được một thông báo lỗi nói

"cú pháp không đúng gần từ khóa 'SELECT'".

Có ai có bất kỳ ý tưởng nào về cách thực hiện việc này hoặc cách tiếp cận tốt hơn không?

+0

Bạn cũng có thể cần chỉ định trang tính với '[Sheet1]' Tôi nghĩ – JNK

+1

Bạn có thể chỉ định với [Sheet1]? Ohhhh [Chết tiệt] !!! – JBone

Trả lời

40

Tôi không biết nếu điều này là những gì bạn đang tìm kiếm, nhưng bạn có thể xuất kết quả sang Excel như thế này:

Trong cửa sổ kết quả, nhấp vào ô trên cùng bên trái để làm nổi bật tất cả các hồ sơ và sau đó nhấp chuột phải vào ô trên cùng bên trái và nhấp vào "Lưu kết quả dưới dạng". Một trong các tùy chọn xuất là CSV.

Bạn có thể cung cấp này quá một shot:

INSERT INTO OPENROWSET 
    ('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\Test.xls;','SELECT productid, price FROM dbo.product') 

Cuối cùng, bạn có thể nhìn vào cách sử dụng SSIS (thay thế DTS) cho xuất khẩu dữ liệu. Dưới đây là một liên kết đến một hướng dẫn:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

+4

Lưu ý rằng Nhấp chuột phải/Lưu dưới dạng ... CSV không trích dẫn các trường văn bản chứa dấu phẩy hoặc dòng mới. Vì vậy, nếu bất kỳ dữ liệu nào của bạn chứa dấu phẩy, bạn sẽ kết thúc bằng CSV không đúng định dạng. – aucuparia

+0

Lưu kết quả như không xuất tiêu đề cột. – YDS

11

Nếu bạn chỉ cần xuất sang excel, bạn có thể sử dụng trình hướng dẫn dữ liệu xuất. Nhấp chuột phải vào cơ sở dữ liệu, Tác vụ-> Xuất dữ liệu.

+1

Đi để đặt điều này trong một thủ tục được lưu trữ và phải chạy như một sự kiện trên một trang – JBone

1

Tôi đã có một vấn đề tương tự nhưng với một twist - các giải pháp nêu trên làm việc khi resultset xuất thân từ một truy vấn nhưng trong hoàn cảnh của tôi, tôi đã chọn truy vấn nhiều cá nhân mà tôi cần kết quả được xuất sang Excel. Dưới đây chỉ là một ví dụ để minh họa mặc dù tôi có thể làm một điều khoản name in ...

select a,b from Table_A where name = 'x' 
select a,b from Table_A where name = 'y' 
select a,b from Table_A where name = 'z' 

Thuật sĩ bị cho tôi xuất khẩu kết quả từ một truy vấn để nổi trội nhưng không phải tất cả các kết quả từ các truy vấn khác nhau trong trường hợp này.

Khi tôi nghiên cứu, tôi thấy rằng chúng tôi có thể vô hiệu hóa kết quả thành lưới và cho phép kết quả với Văn bản. Vì vậy, nhấn Ctrl + T, sau đó thực hiện tất cả các câu lệnh. Điều này sẽ hiển thị kết quả dưới dạng tệp văn bản trong cửa sổ đầu ra. Bạn có thể thao tác văn bản thành định dạng được phân tách bằng tab để bạn nhập vào Excel.

Bạn cũng có thể nhấn Ctrl + Shift + F để xuất kết quả sang tệp - nó xuất dưới dạng tệp .rpt có thể được mở bằng trình soạn thảo văn bản và thao tác để nhập excel.

Hy vọng điều này sẽ giúp bất kỳ người nào khác gặp sự cố tương tự.