【发布时间】:2020-10-14 19:25:42
【问题描述】:
我之前研究过其他解决方案,但无法从解释中找出问题所在。我正在尝试运行一个 python 脚本,其中数据从 oltp MySQL 数据库 (AWS RDS) 加载到 AWS Redshift 上的 olap 数据库。我在 Redshift 中定义了我的表,如下所示:
create_product = ("""CREATE TABLE IF NOT EXISTS product (
productCode varchar(15) NOT NULL PRIMARY KEY,
productName varchar(70) NOT NULL,
productLine varchar(50) NOT NULL,
productScale varchar(10) NOT NULL,
productVendor varchar(50) NOT NULL,
productDescription text NOT NULL,
buyPrice decimal(10,2) NOT NULL,
MSRP decimal(10,2) NOT NULL
)""")
我正在使用 python 脚本将数据从 RDS 加载到 Redshift。我要加载的函数体
for query in dimension_etl_query:
oltp_cur.execute(query[0])
items = oltp_cur.fetchall()
try:
olap_cur.executemany(query[1], items)
olap_cnx.commit()
logger.info("Inserted data with: %s", query[1])
except sqlconnector.Error as err:
logger.error('Error %s Couldnt run query %s', err, query[1])
脚本运行抛出错误
olap_cur.executemany(查询[1],项目) psycopg2.errors.StringDataRightTruncation:对于类型字符变化的值太长(256) 我已经在我的 SQL 数据库中检查了每个列的长度,并且只有 productDescription 的长度大于 265 个字符。但是,我在 postgres 中为该列使用文本数据类型。希望有任何关于如何找到根本原因的提示?
【问题讨论】:
标签: amazon-redshift