Kedro使用pandas.SQLTableDataSet访问SQL Server表提示不存在如何解决?
你遇到的问题核心是pandas.SQLTableDataSet和pandas.SQLQueryDataSet的底层实现逻辑不同:SQLQueryDataSet直接执行你写的原生SQL语句,所以写全库全路径的表名可以正常识别;但SQLTableDataSet底层调用的是pandas的read_sql_table/to_sql方法,不支持把库名、schema直接拼在table_name参数里,需要单独配置对应参数,正确配置方式如下:
- 单独添加
schema参数指定 schema 名称,不要拼在table_name中 - 如果你的数据库方言支持(比如PostgreSQL、Snowflake、BigQuery等),需要指定数据库名的话单独加
catalog参数 - 也可以直接在数据库连接凭证的连接串里指定默认库和默认schema,比如PostgreSQL连接串可以加
options=-c search_path=dwschema指定默认schema
正确的配置示例如下:
flp_test: type: pandas.SQLTableDataSet credentials: dw_dev_credentials table_name: flp_tst schema: dwschema # 单独指定schema catalog: dwdb # 按需添加,指定数据库名 load_args: index_col: ['numero'] columns: ['numero'] save_args: if_exists: 'append'
另外也可以检查下凭证对应的数据库用户,是否有dwschema下flp_tst表的读写权限,部分数据库权限不足时也会抛出表不存在的报错。
内容的提问来源于stack exchange,提问作者filippo
相关产品推荐
相关产品推荐

