我正在导入一个带有行和列分隔符的平面 .txt 文件。问题是行分隔符用于减小文件大小,因此通常会跳过其余列。另一个问题是最长字符的长度是未知的,因此,如果这个 char 字符串被截断,那么我们会丢失分隔符,整个结构就会分崩离析。
我面临的问题的一个明确示例包括
.txt 文件
Var1'~'Var2'~'Var3'~'Var4'~'Var5'~'Var6'#@#@'
1'~''#@#@'
This is going to be a really long string as an example of a situation where the long string is very large and so the truncated string does not indicate a delimiter and we lose data '#@#@'
1'~' 2'~' 3'~' 4'~' 5'~' 6'#@#@'
1'~' 2'~' 3'~''#@#@'
由于多种原因,我在尝试导入此数据时遇到了很多问题:
为字符变量设置非常大的长度会使导入过程非常耗时,而且我们不知道最长字符 var 的长度,因此每次迭代都需要更多时间
当结构意味着下一行可以在所有列都被填充之前发出信号时,我还没有找到一种方法来处理列和行分隔符,即不能只为行分隔符创建一个额外的列并删除它。
我尝试过的SAS代码:
data want;
infile "file-location" dlmstr = "#@#@" dsd recfm = F lrecl=10000000000;
informat var $200.
input var $ @@;
run;
非常感谢任何经验和见解。