我正在运行一个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
答案 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)"
..。并共享输出?很有可能是您对内存的预测过多,无法按太多列进行排序。
希望这对初学者有帮助...