【发布时间】:2016-01-26 17:50:36
【问题描述】:
我有一个大型 json 文件 (250 Mb),在记事本或 SAS 中打开文件时,其中没有换行符。但是如果我在写字板中打开它,我会得到正确的换行符。我想这可能意味着 json 文件使用了 unix 换行符,notapad 无法读取,但 wordpad 可以从我读过的内容中读取。
我需要将文件导入 SAS。这样做的一种方法是在写字板中打开文件,将其保存为文本文件,希望保留正确的换行符,以便我可以在 SAS 中读取文件。我已经尝试读取文件,但是没有换行,我只能得到第一个观察结果,我无法让程序找到下一个观察结果。
我尝试让写字板保存文件,但写字板每次都崩溃,可能是因为文件大小。还尝试通过 powershell 执行此操作,但无法弄清楚打开文件后如何保存文件,而且当我通过指向并单击尝试它时,我看不出它应该工作的原因,因为它会崩溃。
还有其他方法可以修复这个 json 文件吗?有没有办法查看换行符的unix代码并将其替换为windows换行符或类似的东西?
编辑:
我尝试在文件名和 infile 中添加 TERMSTR=LF 选项,但没有任何运气:
filename test "C:\path";
data datatest;
infile test lrecl = 32000 truncover scanover TERMSTR=LF;
input @'"Id":' ID $9.;
run;
但是,如果我手动编辑文件的一小部分以设置换行符,它就可以工作。 TERMSTR 选项似乎对我没有多大作用
编辑 2:
使用RECFM=F解决了
data datatest;
infile test lrecl = 42000 truncover scanover RECFM=F ;
input @'"Id":' ID $9.;
run;
编辑 3:
结果它终究没有解决问题。 RECFM=F 表示所有记录都有固定长度,但它们没有,所以我的数据混淆了很多信息都被跳过了。试过RECFM=V(ariable),但这也不起作用。
【问题讨论】:
-
查看 FILENAME 语句的文档,特别是 TERMSTR=LF。
-
您可以发布您的解决方案作为问题的答案,如果您对它感到满意,请接受它。
-
原来我还是没有解决问题,se edit 3
-
JSON 文件不需要有任何换行符。为什么不尝试使用 RECFM=N 读取它?
-
我尝试使用 RECFM=N,但收到以下警告:'@"STRING"' INPUT/PUT 语句选项与二进制模式 I/O 不一致。正在终止 DATA STEP 的执行。
标签: json powershell sas wordpad