无法从 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 读取列名有空格的数据的主要内容,如果未能解决你的问题,请参考以下文章

数据库中列名有空格时如何写SQL

如何打开文件夹名称之间有空格的doc文件

无法使用 psycopg2 从 Amazon Redshift 读取数据

redshift update 命令从另一列设置值,该列名是标识符

使用Flow读取Excel表格碰到列标题有换行,单元格中有空格的处理方法

无法从数据流中的 GCS 读取我的配置文本文件(列名)