使用Vertica插入SQL表时出现资源不足错误

时间:2019-08-13 13:20:01

标签: sql vertica

我正在运行一个Python脚本,以将数据从DataFrame加载到SQL表中。但是,insert命令抛出此错误:

(pyodbc.Error) ('HY000', '[HY000] ERROR 3587:  Insufficient resources to execute plan on pool fastlane [Request exceeds session memory cap: 28357027KB > 20971520KB]\n (3587) (SQLExecDirectW)')

这是我的代码:

df.to_sql('TableName',engine,schema='trw',if_exists='append',index=False) #copying data from Dataframe df to a SQL Table

1 个答案:

答案 0 :(得分:0)

您能为我做以下事情吗?

运行此命令-并共享输出。 MAXMEMORYSIZE,MEMORYSIZE和MAXQUERYMEMORYSIZE以及PLANNEDCONCURRENCY使您在计划查询/复制命令时了解(内存)预算。

gessnerm@gessnerm-HP-ZBook-15-G3:~/1/fam/fam-ostschweiz$ vsql -x -c \
 "select * from resource_pools where name='fastlane'"
-[ RECORD 1 ]------------+------------------
pool_id                  | 45035996273841188
name                     | fastlane
is_internal              | f
memorysize               | 0%
maxmemorysize            | 
maxquerymemorysize       | 
executionparallelism     | 16
priority                 | 0
runtimepriority          | MEDIUM
runtimeprioritythreshold | 2
queuetimeout             | 00:05
plannedconcurrency       | 2
maxconcurrency           | 
runtimecap               | 
singleinitiator          | f
cpuaffinityset           | 
cpuaffinitymode          | ANY
cascadeto                | 

然后,您应该从QUERY_REQUESTS系统表中挖掘python脚本触发的asqlal SQL命令。格式应为:

COPY <_the_target_table_> 
FROM STDIN DELIMITER ',' ENCLOSED BY '"' 
DIRECT REJECTED DATA '<_bad_file_name_>'

或类似的

然后:该文件有多大?您要一次加载的文件有多少?如果太大,那么B.Muthamizhselvi是正确的-您需要分担装入的数据量。

您还可以运行:

vsql -c "SELECT EXPORT_OBJECTS('','<schema>.<table>',FALSE)"

..。并共享输出?很有可能是您对内存的预测过多,无法按太多列进行排序。

希望这对初学者有帮助...