无法从 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 读取列名有空格的数据的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 psycopg2 从 Amazon Redshift 读取数据
redshift update 命令从另一列设置值,该列名是标识符