Redshift - 将文本列插入数据库表的问题
Posted
技术标签:
【中文标题】Redshift - 将文本列插入数据库表的问题【英文标题】:Redshift - Issue inserting text column to Database table 【发布时间】:2018-07-05 08:35:10 【问题描述】:我正在尝试使用 python 将数据从 JIRA 更新到 Redshift DB。我在更新“描述”列中的值时遇到问题。 DB 中的目标列是 varchar 类型。
下面是我如何在将“描述”列插入 Redshift DB 之前对其进行修改。
df['description'] = df['description'].astype(str)
它会抛出以下错误:
DataError: value too long for type character varying(256)
我在插入此字段时做错了什么。描述列中的值的长度最多为 6000 个字符。
对此有任何帮助,将不胜感激..
【问题讨论】:
【参考方案1】:可能与this 重复。
df['description'] = df['description'].str.slice(0,255)
评论后编辑 这是我的完整工作示例。
import pandas as pd
d = 'name' : pd.Series(['FFFFF', 'FFFFF', 'FFFFFGGGGg'], index=['a', 'b', 'c']),
'description' : pd.Series(['FFFFF', 'FFFFF', 'FFFFFGGGGg','4666666666'], index=['a', 'b', 'c', 'd']),
'place' : pd.Series(['166666660', '26666666660', '3666666660'], index=['a', 'b', 'c'])
df = pd.DataFrame(d)
print ("Our dataframe is:")
print (df)
print ("Modifying column description:")
df['description'] = df['description'].str.slice(0,4)
print(df)
【讨论】:
感谢您的回复。尝试使用您的建议“df['description'].str.slice(0,255)”。它会抛出一个错误“ProgrammingError: can't adapt type 'dict'”。 不确定为什么会出现异常,我刚刚添加了完整的工作示例,这是我之前分享的一行。希望对您有所帮助。 我认为,无法适应可能是因为数据类型不匹配,但不确定。 想知道如何解决这个问题,因为我的源列长度超过 256 个字符,但目标列类型是 varchar。相信这会导致问题..str.slice(0,4)
正在将原始长度转换为 4 个字符,同样 (0,255) 将从任何长度截断为 255 个字符。以上是关于Redshift - 将文本列插入数据库表的问题的主要内容,如果未能解决你的问题,请参考以下文章