没有换行符的JSON文件,无法将文件导入SAS

时间:2015-10-27 10:48:42

标签: json powershell sas wordpad

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

我需要将文件导入SAS。执行此迁移的一种方法是在wordpad中打开文件,将其另存为文本文件,这样可以保留正确的换行符,以便我可以在SAS中读取该文件。我试过读过这个文件,但是没有换行符,我只得到了第一个观察结果,我无法让程序找到下一个观察结果。

我尝试使用wordpad保存文件,但每次都会出现wordpad崩溃,可能是因为文件大小。还尝试通过PowerShell执行此操作,但无法弄清楚如何在打开文件时保存文件,并且当我通过点击点击尝试它时,我看不出为什么它应该看起来像wordpad崩溃。

还有其他方法来修复这个json文件吗?有没有办法查看换行代码的换行符,并用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),但这也不起作用。

2 个答案:

答案 0 :(得分:0)

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

TYPE input_filename | MORE /P > output_filename

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

答案 1 :(得分:0)

250 MB不太长,不能作为单一记录处理。

data want ;
  infile json lrecl=250000000; *250 Mb ;
  input @'"Id":' ID :$9. @@;
run;