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

Performance issue on dataload SAS to 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;

它不工作我收到一张便条:注意:没有数据 found/modified。

我尝试使用 proc append 和 proc dataset 以及 proc copy 一切都很慢。 我尝试使用 bulkload,但它不可用。

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

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;

设法加载数据:

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

最终问题出在时间戳正好为空值 我还没有找到合适的解决方案来加载任何类型的数据,而不是空值和格式,但我设法比使用 ODBC

更快地加载数据

我尝试了尾随 nullcols 的选项,但它对空值没有帮助

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;