我正在使用SQL workbench / J与redshift集群交互,我想在不使用COPY命令的情况下将CSV文件(大约500k行)加载到redshift表(我有插入权限)中(因为我没有有权复制到s3)。
你知道它是否可行(使用插入),如果是的话,你可以帮助我吗?
请注意,我唯一的权限是:选择,插入,更新和删除群集中的表。
感谢。
答案 0 :(得分:0)
COPY
命令是将数据加载到Redshift 的最佳方式。唯一的另一种方法是逐行INSERT
数据,这可以使用python脚本完成,该脚本在建立与Redshift的连接后利用pyscopg2
运行INSERT
SQL查询。
因此,只需逐行迭代CSV文件并对所有行执行INSERT
查询:
import psycopg2
conn = psycopg2.connect("dbname = 'your_db_name' user= 'your_user' host='redshift_cluster_endpoint_without_port_number' port='port_number' password='password'")
cur = conn.cursor()
for row in rows:
cur.execute("INSERT INTO TABLE_NAME VALUES(%s,%s,%s,%s)" %(row[0],row[1],row[2],row[3]))
其中row[0],row[1],row[2],row[3]
是您行中所有列的数据。
请记住,逐行插入将比COPY
命令更慢且效率更低。
答案 1 :(得分:-2)