如何使用Python进行redshift MySQL迁移

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (325)

我正在使用下面的脚本将数据从MySQL迁移到redShift。

mysql_table_name = 'clabDevelopment.KPI_kpireport'
mysql_cur = mysql_conn.cursor()
mysql_cur.execute('select * from %s where Date = "2018-01-01";' % mysql_table_name  )
description = mysql_cur.description
rows = mysql_cur.fetchall()

# Insert data into Redshift
redshift_table_name = 'kpi_kpireport'
redshift_cur = redshift_conn.cursor()
insert_template = 'insert into %s (%s) values %s;'
column_names = ', '.join([x[0] for x in description])
values = ', '.join(['(' + ','.join(map(str, x)) + ')' for x in rows])

redshift_cur.execute(insert_template % (redshift_table_name, column_names, values))

我遇到的邮件问题是,当值为空时:

values (241325,2018-01-01,None,,CHG,USA,N.

就像None和CHG之间有“,它会导致程序失败。

以下是错误:

Traceback (most recent call last):
  File "C:\Users\trackstarz\migration.py", line 20, in <module>
    redshift_cur.execute(insert_template % (redshift_table_name, column_names, values))
psycopg2.ProgrammingError: syntax error at or near ","
LINE 1: ...re_Costs, FBA_Fee) values (241325,2018-01-01,None,,CHG,USA,N...
                                                             ^

[Finished in 2.0s]
提问于
用户回答回答于

将数据加载到AmazonRedShift中的首选方法是通过COPY命令。这允许跨所有节点并行加载大容量数据。

建议不使用个人INSERT语句加载数据。(INSERT如果要从另一个表中选择大容量数据,则可以。)

扫码关注云+社区

领取腾讯云代金券