我尝试将zip-archive中的所有文本文件读入SAS。 这是我到目前为止所得到的:
filename zipfile zip '/sas_p/gridshared/ch/eg_data/b036081/01_Import/YB_ECPAB/2016wt10vs0_1.zip';
DATA work.YB_ECPAB;
LENGTH
F1 $ 1 KEART 8 KTYP_OR $ 1 KTYP_IAS $ 2 YB_BUKOR 8 KTR_TYP $ 1 KTR 8 RECHNART $ 1 ZIEL_VV $ 2 GEN_KZ $ 1 SCHLBASIS_KZ $ 2 BRCHE 8 BRCHU 8 BRCHE_IAS 8 PRODU 8 PROGR 8 PROKR 8 SPRTE 8 USPRT 8 GESELLSCHAFT 8 KONZERNSERVICE $ 1 KOROR 8 KSTBETR 8 KST 8 REQUESTID_BW $ 1 POLID $ 1 VORGANGSART $ 1 BEWERTUNGSSICHT $ 1 WERTTYP 8 VERSION 8 AENDERUNGSLAUFID $ 1 Satztyp $ 1 RequestID $ 30 JAHRPERIODE 8 PERIODE 8 JAHRVARIANTE $ 2 JAHR 8 WAEHRUNG $ 3 MENGE 8 BETR 8 Menge2 8;
FORMAT
F1 $CHAR1. KEART BEST7. KTYP_OR $CHAR1. KTYP_IAS $CHAR2. YB_BUKOR BEST4. KTR_TYP $CHAR1. KTR BEST5. RECHNART $CHAR1. ZIEL_VV $CHAR2. GEN_KZ $CHAR1. SCHLBASIS_KZ $CHAR2. BRCHE BEST3. BRCHU BEST3. BRCHE_IAS BEST3. PRODU BEST3. PROGR BEST3. PROKR BEST3. SPRTE BEST3. USPRT BEST3. GESELLSCHAFT BEST6. KONZERNSERVICE $CHAR1. KOROR BEST4. KSTBETR BEST10. KST BEST10. REQUESTID_BW $CHAR1. POLID $CHAR1. VORGANGSART $CHAR1. BEWERTUNGSSICHT $CHAR1. WERTTYP BEST2. VERSION BEST2. AENDERUNGSLAUFID $CHAR1. Satztyp $CHAR1. RequestID $CHAR30. JAHRPERIODE BEST7. PERIODE BEST1. JAHRVARIANTE $CHAR2. JAHR BEST4. WAEHRUNG $CHAR3. MENGE BEST10. BETR COMMA32.2 Menge2 BEST10.;
INFILE zipfile(2016wt10vs0_1.txt)
/*LRECL=188*/
firstobs=4
ENCODING="utf-16le"
TERMSTR=CRLF
DLM='09'x
MISSOVER
DSD;
INPUT
F1 : $CHAR1. KEART : ?? BEST7. KTYP_OR : $CHAR1. KTYP_IAS : $CHAR2. YB_BUKOR : ?? BEST4. KTR_TYP : $CHAR1. KTR : ?? BEST5. RECHNART : $CHAR1. ZIEL_VV : $CHAR2. GEN_KZ : $CHAR1. SCHLBASIS_KZ : $CHAR2. BRCHE : ?? BEST3. BRCHU : ?? BEST3. BRCHE_IAS : ?? BEST3. PRODU : ?? BEST3. PROGR : ?? BEST3. PROKR : ?? BEST3. SPRTE : ?? BEST3. USPRT : ?? BEST3. GESELLSCHAFT : ?? BEST6. KONZERNSERVICE : $CHAR1. KOROR : ?? BEST4. KSTBETR : ?? BEST10. KST : ?? BEST10. REQUESTID_BW : $CHAR1. POLID : $CHAR1. VORGANGSART : $CHAR1. BEWERTUNGSSICHT : $CHAR1. WERTTYP : ?? BEST2. VERSION : ?? BEST2. AENDERUNGSLAUFID : $CHAR1. Satztyp : $CHAR1. RequestID : $CHAR30. JAHRPERIODE : ?? BEST7. PERIODE : ?? BEST1. JAHRVARIANTE : $CHAR2. JAHR : ?? BEST4. WAEHRUNG : $CHAR3. MENGE : BEST10. BETR : ?? COMMA32. Menge2 : BEST10.;
DROP
F1 REQUESTID_BW POLID VORGANGSART BEWERTUNGSSICHT AENDERUNGSLAUFID Satztyp MENGE MENGE2;
RUN;
我的代码执行,但没有记录被读入我的数据集(显示空数据集)。
日志显示:
NOTE: The infile library ZIPFILE is:
Directory=/sas_p/gridshared/ch/eg_data/b036081/01_Import/YB_ECPAB/2016wt10vs0_1.zip
NOTE: The infile ZIPFILE(2016wt10vs0_1.txt) is:
Filename=/sas_p/gridshared/ch/eg_data/b036081/01_Import/YB_ECPAB/2016wt10vs0_1.zip,
Member Name=2016wt10vs0_1.txt
NOTE: Truncation has occurred on the source line.
WARNING: A character that could not be transcoded has been replaced in record 0.
NOTE: A total of 0 records were read from the infile library ZIPFILE.
NOTE: 0 records were read from the infile ZIPFILE(2016wt10vs0_1.txt).
NOTE: The data set WORK.YB_ECPAB has 0 observations and 32 variables.
NOTE: DATA statement used (Total process time):
real time 0.07 seconds
cpu time 0.08 seconds
非常感谢有关以下方面的任何帮助:
需要修理什么?
是否可以一次读取zip-archive中的所有文件(类似于使用未压缩文件的通配符)?
答案 0 :(得分:1)
- 需要修理什么?
醇>
解决方案是使用Notepad ++将我的文本文件转换为utf-8
并相应地调整我的SAS代码。
虽然我的代码为ENCODING="utf-16le"
和TERMSTR=CRLF
,但当未压缩时,SAS很好地处理了来自SAP的ucs-2le
编码文件。
但是,在压缩文件中,SAS无法识别lineseparator CRLF
。
帮助我解决这个问题的链接:
File encoded as UCS-2 Little Endian reports 2x too many lines to Java
https://winscp.net/eng/docs/faq_line_breaks
- 是否可以一次读取zip-archive中的所有文件(类似于使用未压缩文件的通配符)?
醇>
尚未解决