带有文本限定符

时间:2015-08-12 15:01:02

标签: import sas flat-file

"6/23/2015 8:55:36 AM,6/23/2015 7:57:55 AM,test,A B,""C, D "",E-MA,F,Personal G,G one,test - TWO THREE,""I LIKE APPLE"",""ONE, TWO"",FCB,6/27/2015 - 6/27/2016,6/23/2015,BIZ,Personal,MA,NY,Personal,Group,""NYC Ins. Companies"",,,""$NYC NY-MA, (Group)"",""$NYC NY-MA, (Group)"",,,,"

数据看起来像这样但有10k行。我第一次尝试使用PROC IMPORT,但它没有将逗号(,)识别为文件中的分隔符。然后我尝试了DATA STEP INFILE,但仍然没有解决问题。

有没有人有使用文本限定符导入文件的经验?

谢谢。

更新

  • 不知道如何在此处插入表格,但如果我使用excel导入文件,将逗号指定为分隔符并将双引号指定为文本限定符,则会有30个字段。看起来如下并抱歉蹩脚的桌子......

VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7 VAR8 VAR9 VAR10 VAR11 VAR12 VAR13 VAR14 VAR15 VAR16 VAR17 VAR18 VAR19 VAR20 VAR21 VAR22 VAR23 VAR24 VAR25 VAR26 VAR27 VAR28 VAR29 VAR30

2015/6/23 8:55 | 6/23/2015 7:57 |测试| A | B C,D | E-MA | F |个人G | G one |测试 - 两个三个|我喜欢APPLE | ONE,TWO | FCB 6/27/2015 - 2016/6/27 | 6/23/2015 | BIZ |个人| MA | NY |个人| Group NYC Ins。公司| | | $ NYC NY-MA,(集团)| $ NYC NY-MA,(集团)||||

  • 这不是复制粘贴问题。我有原始的csv文件和txt文件。

1 个答案:

答案 0 :(得分:0)

我认为如果您通过文件初步传递以删除无关的双引号,您可能会更好地使用proc import

data _null_;
  infile "original_file.csv" lrecl = 32000;
  file "new_file.csv";
  input;
  _infile_ = tranwrd(substr(_infile_,2,length(_infile_) - 1),'""','"');
  put _infile_;
run;

这个想法非常简单 - 在整行中读取,删除第一个和最后一个字符(假设这些字符始终是双引号),然后用双引号替换双引号。

如果您的任何文本字段实际上应该包含双引号,这可能会导致一些进一步的问题,但是否则它应该生成一个应该更容易直接导入的文件,可以通过proc import或使用{{1在适当的infile语句上的选项。