0

我有一个大型 json 文件(250 Mb),在记事本或 SAS 中打开文件时没有换行符。但是如果我在写字板中打开它,我会得到正确的换行符。我想这可能意味着 json 文件使用 unix 换行符,notapad 无法读取,但 wordpad 可以从我读过的内容中读取。

我需要将文件导入 SAS。这样做的一种方法是在写字板中打开文件,将其保存为文本文件,希望保留正确的换行符,以便我可以在 SAS 中读取文件。我已经尝试读取文件,但是没有换行符,我只能得到第一个观察结果,我无法让程序找到下一个观察结果。

我曾尝试让写字板保存文件,但写字板每次都会崩溃,可能是因为文件大小。还尝试通过powershell执行此操作,但无法弄清楚打开文件后如何保存文件,而且当我通过指向并单击尝试它时,我看不出它为什么应该工作,因为写字板崩溃了。

有没有另一种方法来修复这个 json 文件?有没有办法查看换行符的unix代码并将其替换为windows换行符或类似的东西?

编辑:我尝试TERMSTR=LF在文件名和 infile 中添加选项,但没有任何运气:

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),但这也不起作用。

4

2 回答 2

0

我猜你正在使用Windows,所以试试:

TYPE input_filename | MORE /P > output_filename

这应该用 windows/dos 替换 unix 样式的文本文件。

于 2015-10-27T14:25:05.600 回答
0

将 250 MB 视为一条记录并不算太长。

data want ;
  infile json lrecl=250000000; *250 Mb ;
  input @'"Id":' ID :$9. @@;
run;
于 2015-10-27T14:50:52.627 回答