Tôi bắt buộc phải tạo một csv từ một bảng trong Oracle, sử dụng sqlplus. Sau đây là định dạng yêu cầu:Định dạng tiêu đề trong khi cuộn một tệp csv trong sqlplus
"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID"
"664436565","16","2195301","0"
"664700792","52","1099970","0"
Sau đây là mảnh liên quan của shell script tôi đã viết:
sqlplus -s $sql_user/[email protected]$sid <<eof>> /dev/null
set feedback off
set term off
set linesize 1500
set pagesize 11000
--set colsep ,
--set colsep '","'
set trimspool on
set underline off
set heading on
--set headsep $
set newpage none
spool "$folder$filename$ext"
select '"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
from cvo_admin.MISSING_HOST_SITE_TX_IDS;
spool off
(Tôi đã sử dụng một số báo cáo nhận xét trong, để biểu thị những điều mà tôi đã cố gắng nhưng couldn 't có được để làm việc)
Kết quả tôi nhận được là:
'"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
"TRANSPORT INC","113","00000000","25-JAN-13 10.17.51 AM",""
"TRANSPORT INC","1905","00000000","25-JAN-13 05.06.44 PM","0"
Những show rằng tiêu đề là sai lầm - đó là nghĩa đen in toàn bộ chuỗi cần phải được hiểu là một câu lệnh sql, như trường hợp với dữ liệu được hiển thị.
Tùy chọn Tôi đang xem xét:
1) Sử dụng colsep
set colsep '","'
spool
select * from TABLE
spool off
này giới thiệu các vấn đề khác như các dữ liệu có khoảng trống ở đầu và đuôi, đầu tiên và giá trị cuối cùng trong tập tin được không dùng dấu nháy
HOST_SITE_TX_ID"," SITE_ID"
" 12345"," 16"
" 12345"," 21
Tôi kết luận rằng phương pháp này khiến tôi bị ợ nóng nhiều hơn phương pháp tôi đã mô tả trước đó.
2) Tải tệp và sử dụng regex để sửa đổi tiêu đề.
3) Rời bỏ tiêu đề hoàn toàn và tự thêm một chuỗi tiêu đề ở đầu file, sử dụng một kịch bản
Lựa chọn 2 là doable hơn, nhưng tôi vẫn còn say sưa hỏi, nếu có thể có một tốt hơn cách để định dạng tiêu đề bằng cách nào đó, do đó, nó đi kèm với định dạng csv thông thường, (dấu phẩy phân tách kép, dấu ngoặc kép).
Tôi đang tìm cách làm ít mã hóa nhất có thể - bảng tôi xuất có khoảng 40 cột và tôi hiện đang chạy tập lệnh cho khoảng 4 triệu bản ghi - chia chúng thành một loạt khoảng 10 nghìn bản. Tôi thực sự đánh giá cao bất kỳ đề xuất nào, thậm chí hoàn toàn khác với cách tiếp cận của tôi - tôi là một lập trình viên trong học tập.
Tôi đang gặp khó khăn khi xem đây là câu trả lời cho câu hỏi được hỏi tại đây. –