Tôi có rất nhiều tệp ở định dạng SAS và tôi muốn có thể đọc chúng trong các chương trình bên ngoài SAS. Tôi không có gì ngoại trừ hệ thống SAS cơ bản được cài đặt. Tôi có thể tự chuyển đổi từng cái một, nhưng tôi muốn một cách để tự động làm điều đó.Tôi làm cách nào để đọc tập dữ liệu SAS?
Trả lời
Bạn sẽ cần phải có một phiên chạy SAS để hoạt động như một máy chủ dữ liệu. Sau đó bạn có thể truy cập dữ liệu SAS bằng ODBC, xem SAS ODBC drivers guide.
Để có được địa phương SAS ODBC máy chủ đang chạy, bạn cần phải:
- Xác định thiết lập máy chủ SAS ODBC tại được mô tả trong hướng dẫn tài xế SAS ODBC. Trong ví dụ sau, tôi sẽ kết nối với một máy chủ được thiết lập với tên "loclodbc".
Thêm một mục trong tập tin dịch vụ của bạn, (C: \ WINDOWS \ system32 \ drivers \ etc \ dịch vụ), như thế này:
- loclodbc 9191/tcp
... bộ số cổng (ở đây: 9191) để nó khớp với thiết lập cục bộ của bạn. Tên của dịch vụ "loclodbc" phải khớp với tên máy chủ như được định nghĩa trong thiết lập ODBC. Lưu ý rằng thuật ngữ "Máy chủ" không liên quan gì đến tên máy chủ vật lý của máy tính của bạn.
Máy chủ ODBC SAS của bạn hiện đã sẵn sàng để chạy, nhưng không có sẵn tài nguyên dữ liệu được chỉ định. Thông thường, bạn sẽ thiết lập điều này trong tab "Thư viện" trong quá trình thiết lập SAS ODBC, nhưng vì bạn muốn trỏ đến nguồn dữ liệu "khi đang di chuyển", chúng tôi bỏ qua điều này.
Từ ứng dụng khách của bạn, bạn có thể kết nối với máy chủ SAS ODBC, trỏ đến tài nguyên dữ liệu bạn muốn truy cập và tìm nạp dữ liệu.
Cách SAS trỏ tới nguồn dữ liệu thông qua khái niệm "LIBNAME". Một libname là một con trỏ logic tới một tập hợp dữ liệu.
Như vậy
LIBNAME sasadhoc 'C:\sasdatafolder';
gán thư mục "C: \ sasdatafolder" tay cầm logic "sasiodat".
Nếu bạn từ bên trong SAS muốn truy cập vào dữ liệu cư trú trong file bảng dữ liệu SAS "C: \ sasdatafolder \ test.sas7bdat", bạn sẽ làm điều gì đó như thế này:
LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
CREATE TABLE WORK.test as
SELECT *
FROM sasadhoc.test
;
QUIT;
Vì vậy, những gì chúng ta cần phải làm là nói cho máy chủ SAS ODBC của chúng tôi gán một tên libname cho C: \ sasdatafolder, từ ứng dụng máy khách của chúng tôi. Chúng ta có thể làm điều này bằng cách gửi yêu cầu phân bổ tài nguyên này khi khởi động, bằng cách sử dụng tham số DBCONINIT.
Tôi đã thực hiện một số mã mẫu để thực hiện việc này. Mã mẫu của tôi cũng được viết bằng ngôn ngữ BASE SAS. Vì rõ ràng có nhiều cách thông minh hơn để truy cập dữ liệu SAS, hơn SAS kết nối với SAS thông qua ODBC, mã này chỉ phục vụ như một ví dụ.
Bạn sẽ có thể lấy các bit hữu ích và tạo ra giải pháp của riêng bạn trong các môi trường lập trình bạn đang sử dụng ...
SAS ODBC mẫu kết nối mã:
PROC SQL;
CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
CREATE TABLE temp_sas AS
SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;
Sự kỳ diệu xảy ra trong phần "CONNECT TO ODBC ..." của mã, gán một libname cho thư mục chứa dữ liệu cần thiết.
Thực ra, bạn không cần phiên chạy SAS; trình điều khiển ODBC sẽ tự động khởi chạy trình điều khiển cho bạn. Tuy nhiên, không có cách nào dễ dàng để lập trình cấu hình ODBC, do đó phải được cấu hình thủ công. Đó là một vấn đề, vì bạn không thể tải một tập dữ liệu tùy ý. –
Theo tùy ý, bạn có thể có nghĩa là "nằm ở bất cứ đâu, với bất kỳ tên" ...? Hoặc nó được đưa ra như một tham số? –
Nằm ở bất kỳ đâu, với bất kỳ tên nào. –
Tôi nghĩ bạn có thể sử dụng ADO, Xem SAS support site để biết thêm chi tiết.
Disclaimer:
- tôi đã không nhìn này trong một thời
- Tôi không chắc chắn 100% rằng điều này không yêu cầu bổ sung giấy phép
- Tôi không chắc chắn nếu bạn có thể làm điều này bằng cách sử dụng Python
Tôi chưa bao giờ thử sử dụng http://www.oview.co.uk/dsread/, nhưng nó có thể là thứ bạn đang tìm kiếm: "một tiện ích dòng lệnh đơn giản để làm việc với tập dữ liệu ở định dạng tệp SAS7BDAT." Nhưng hãy lưu ý "Phần mềm này nên được coi là thử nghiệm và không được đảm bảo là chính xác. Bạn sử dụng nó theo rủi ro của riêng bạn. Nó sẽ chỉ hoạt động trên các tệp SAS7BDAT định dạng Windows không nén bây giờ."
Bạn có thể tạo chương trình chuyển đổi SAS thành CSV.
Save the sau trong sas_to_csv.sas
:
proc export data=&sysparm
outfile=stdout dbms=csv;
run;
Sau đó, giả sử bạn muốn truy cập libname.dataset
, gọi chương trình này như sau:
sas sas_to_csv -noterminal -sysparm "libname.dataset"
Các dữ liệu SAS được chuyển đổi sang CSV có thể được đường ống vào Python. Trong Python, nó sẽ đủ dễ dàng để tạo ra các tham số "libname.dataset" theo lập trình.
Có bây giờ là một gói python mà sẽ cho phép bạn đọc .sas7bdat file, hoặc chuyển đổi chúng sang csv nếu bạn thích
- 1. SAS - Làm cách nào để nhận các quan sát 'n' cuối cùng từ tập dữ liệu?
- 2. Làm thế nào để bạn in quan sát cuối cùng của tập dữ liệu SAS?
- 3. Mở bộ dữ liệu SAS để xem từ bên trong chương trình .sas
- 4. Làm cách nào để đọc dữ liệu cx_Oracle.LOB bằng Python?
- 5. Làm cách nào tôi có thể xuất GridView.DataSource thành dữ liệu hoặc tập dữ liệu?
- 6. Tôi làm cách nào để ghi lại các tập dữ liệu bằng roxygen?
- 7. Làm cách nào để tăng truy vấn đọc/giây trên cơ sở dữ liệu của tôi?
- 8. Làm cách nào để đọc cơ sở dữ liệu của tôi từ DDMS
- 9. SAS: ghép các tập dữ liệu khác nhau trong khi vẫn giữ các tên bảng dữ liệu riêng lẻ
- 10. Làm thế nào để đọc dữ liệu từ một tập tin trong Lua
- 11. liên lạc với bộ dữ liệu SAS từ R
- 12. Làm thế nào để đọc siêu dữ liệu từ mp3?
- 13. Mở rộng cơ sở dữ liệu PHPUnit - Làm cách nào để có tập dữ liệu trống?
- 14. Làm cách nào để chỉ lấy lược đồ cơ sở dữ liệu vào tập dữ liệu?
- 15. Sử dụng Python, làm cách nào để đọc/ghi dữ liệu trong bộ nhớ như tôi làm với một tệp?
- 16. Cách đọc dữ liệu hdf trong Octave
- 17. Làm thế nào để đọc dữ liệu từ cơ sở dữ liệu SQLite?
- 18. Làm cách nào để biết khi nào tập dữ liệu của tôi trong R sẽ quá lớn?
- 19. Làm thế nào để đọc dữ liệu từ cổng COM bằng cách sử dụng tập tin thực thi?
- 20. Lỗi trong đọc trong tập dữ liệu vào R
- 21. Cách đúng để đọc một tập tin dữ liệu vào một mảng
- 22. Việc sử dụng tùy chọn KEEP trên bộ dữ liệu SAS có cải thiện hiệu năng đọc không?
- 23. Làm cách nào để đọc dữ liệu lớn từ tệp proc?
- 24. Làm cách nào để đọc dữ liệu hình ảnh từ một URL bằng Python?
- 25. Làm cách nào để lưu trữ dữ liệu MySQL
- 26. Làm cách nào để loại bỏ các trường ký tự trong SAS?
- 27. Làm cách nào để đọc chuỗi dữ liệu hàng quý vào ngày R?
- 28. Tôi có thể đọc siêu dữ liệu EF DbContext bằng cách nào?
- 29. Làm cách nào để thêm tiêu đề vào tập dữ liệu trong R?
- 30. làm thế nào tôi có thể đọc dữ liệu nhị phân trong c + +?
gì các chương trình/định dạng mà bạn muốn đọc nó trong? Bạn sẽ làm việc với ngôn ngữ lập trình nào? –
Tôi đang sử dụng Python. Tôi đã không chỉ định một chương trình hoặc định dạng vì tôi không muốn giới hạn các câu trả lời; nếu có một cách để đọc dữ liệu thông qua một DLL hoặc một API, tôi chắc chắn rằng tôi có thể tìm ra cách để gọi nó. Nhưng tôi không thể tìm thấy bất kỳ cách nào để làm điều đó, mà không cấp phép các chương trình bổ sung từ SAS. –
Sẽ viết một macro SAS để chuyển đổi mỗi một tính như một giải pháp tự động? –