将数据加载SAS到Vertica的性能问题

时间:2019-04-11 13:20:52

标签: sas vertica

我们的组织正在从PADB迁移到Vertica。 我们有一些使用SAS的分析师。 我转换了他们的工具和宏,以便能够从PADB到Vertica。 但是,当涉及到从SAS到Vertica的数据加载时,性能与以前不一样。

我看到执行时间从1-2分钟变成了2-3个小时。

我正在使用ODBC,因为我无法使用其他方法,如:

proc sql exec;
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.new_load_test FROM local 
'/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' PARSER fcsvparser() ) by odbc;
disconnect from odbc;
quit;

它不起作用,我收到一条注释:注意:未找到/修改数据。

我尝试使用proc追加和proc数据集,而proc复制一切都很缓慢。 我尝试使用批量加载,但不可用。

关于我可以做什么或尝试加快数据传输的任何想法? 让我知道! -------更新---- 我尝试了其他各种方法,但仍然出现错误,当我检查日志时,我的数据中的空值似乎存在问题...知道吗?

proc sql exec;
 /* Loading converted csv file to ParAccel */ connect to odbc (datasrc=EDW authdomain=VERTICA); execute(COPY CRM_COMMON.new_load_test FROM local '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' DELIMITER ',' ) by odbc; 
disconnect from odbc; 
quit;

1 个答案:

答案 0 :(得分:0)

使用此方法来加载数据:

我使用错误选项中止来获取有关错误的更多详细信息,还使用拒绝选项来查看失败的记录

总的来说,问题在于确切地带有时间戳的空值 我还没有找到一种适合所有解决方案的解决方案,可以在不考虑null和格式的情况下加载任何类型的数据,但是我设法比使用ODBC更快地加载数据

我尝试了尾随nullcols选项,但是使用null值没有帮助

proc sql exec;
/* Loading converted csv file to ParAccel */
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.test_low    FROM local    '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test_low.csv'  DELIMITER ','  abort on error 
    rejected data '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/reject_low.csv' ) by odbc;
disconnect from odbc;
quit;