楼主: yumenderen
8967 4

[问答] 如何实现批量导入或导出数据 [推广有奖]

  • 1关注
  • 2粉丝

讲师

7%

还不是VIP/贵宾

-

威望
0
论坛币
150 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
6852 点
帖子
294
精华
0
在线时间
475 小时
注册时间
2007-12-28
最后登录
2021-5-23

10论坛币
发现贵宝地,想请教一个问题:
比如说我有10个清单(ss1,ss2..ss10),想分别生成10个不同的数据集。他们的字段顺序格式都是一样的,在导入时,往往就要反复运行同样的导入程序(当然还要修改数据集得名称等),很是麻烦
想请教一下:如何实现批量的导入这些数据,分别生成数据集(ss1,ss2...)。是要用宏来做还是怎么用循环,谢谢啦
本人菜鸟,最好能解答的详细点,附上程序语句,呵呵

最佳答案

shenliang_111 查看完整内容

我给你三组程序,应该可以解决楼主的问题 /* 批量导入多个excel*/ %macro ss/parmbuff; %let i=1; %let dsn=%scan(&syspbuff,&i); %put &dsn; %do %while(&dsn ne); PROC IMPORT OUT=WORK.a&i DATAFILE= "D:\&dsn..xls" DBMS=EXCEL REPLACE; SHEET="Sheet1$"; GETNAMES=yes; MIXED=NO; SCANTEXT=YES; USEDATE=YES; SCANTIME=YES; RUN; %let i=%eval(&i+ ...
关键词:批量导入 如何实现 修改数据 数据集 详细点 数据 批量
沙发
shenliang_111 发表于 2011-7-20 19:59:24 |只看作者 |坛友微信交流群
我给你三组程序,应该可以解决楼主的问题
/* 批量导入多个excel*/
%macro ss/parmbuff;
%let i=1;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC IMPORT OUT=WORK.a&i
            DATAFILE= "D:\&dsn..xls"
            DBMS=EXCEL REPLACE;
     SHEET="Sheet1$";
     GETNAMES=yes;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend ss;
options nomlogic nomprint nosymbolgen;
%ss(1,2,book1,shen)
/*批量导出多个excel*/
%macro sss/parmbuff;
%let i=1;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC EXPORT DATA= WORK.&dsn
            OUTFILE= "E:\&dsn..xls"
            DBMS=EXCEL REPLACE;
     SHEET="Sheet";
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend sss;
%sss(test1 test2 test3)
/*特定逻辑库下的所有数据集转化为excel文件*/
%macro sss/parmbuff;
%let i=1;
%let lib=%scan(&syspbuff,&i);
%let i=2;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC EXPORT DATA=&lib..&dsn
            OUTFILE= "E:\&dsn..xls"
            DBMS=EXCEL REPLACE;
     SHEET="Sheet";
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend sss;
%macro tt(lib);
proc sql noprint;
select memname into :namelist separated by ' '
from dictionary.tables
where libname=upcase("&lib") and  memtype='DATA';
%put &namelist;
quit;
%sss(&lib &namelist)
%mend;
%tt(s)
已有 1 人评分论坛币 热心指数 收起 理由
liuzhenzhu + 30 + 1 热心帮助其他会员

总评分: 论坛币 + 30  热心指数 + 1   查看全部评分

使用道具

藤椅
yumenderen 发表于 2011-7-20 21:09:52 |只看作者 |坛友微信交流群
楼上的,分都给你算了,呵呵
我的数据清单是unl格式的,上面的程序应该如何调整呀

使用道具

板凳
yugao1986 发表于 2011-7-20 21:14:52 |只看作者 |坛友微信交流群
论坛上有类似的帖子,可以先搜一下是否和自己的问题一样。个人感觉论坛上的帖子能解决你的问题。
1.是一个excel文件下的十个清单?看这个帖子:https://bbs.pinggu.org/viewthread ... p;page=1#pid9539589
2.如果是单独的excel文件看:https://bbs.pinggu.org/thread-1111573-1-1.html
三人行必有我师

使用道具

报纸
butterfly1107 发表于 2014-10-25 10:49:44 |只看作者 |坛友微信交流群
谢谢,学习啦

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 09:37