无法从 Redshift 读取列名有空格的数据

Posted

技术标签:

【中文标题】无法从 Redshift 读取列名有空格的数据【英文标题】:Unable to read data from Redshift with column names having space 【发布时间】:2019-03-07 08:51:15 【问题描述】:

目前我面临一个问题,即从 redshift 连接将数据读入 Python。我能够从 Python 连接到 redshift 服务器并且还能够获取数据。

在对中间有“空格”的列名应用过滤器时出现问题。我尝试了几种组合通过查询得到过滤后的数据,但没有结果。

这是我用来将 Python 连接到 redshift 服务器的代码 sn-p。

import pandas as pd
import psycopg2
con = psycopg2.connect(dbname= 'dbname', host='hostname', port= 'portnumber', 
                                     user= 'username', password= 'password')
query = "select * from schema.table_name WHERE schema.table_name.part number='123456'
df = pd.read_sql(query, con)

在上面的代码中,我只想获取“零件号”=“123456”的数据。但是由于中间的空间,我得到了错误。我还尝试了 [part number] 、 'part number' 、 part number 、 (part number) 等组合。

需要您的支持才能找到解决此问题的任何方法。

【问题讨论】:

这就是为什么在列名中使用空格总是是个坏主意。 【参考方案1】:

试试

query = "select * from schema.table_name WHERE schema.table_name.\"part number\"='123456';"

或者只是

query = "select * from schema.table_name WHERE \"part number\"='123456';"

【讨论】:

以上是关于无法从 Redshift 读取列名有空格的数据的主要内容,如果未能解决你的问题,请参考以下文章