我正在使用 SQL 工作台 /J 与 redshift 集群交互,我想在不使用 COPY 命令的情况下将 CSV 文件(大约 500k 行)加载到 redshift 表中(我确实有插入权限)(因为我没有权限复制到s3)。
你知道它是否可行(使用也许插入),如果是的话,你能帮我吗?
请注意,我拥有的唯一权限是:在集群中选择、插入、更新和删除表。
谢谢。
我正在使用 SQL 工作台 /J 与 redshift 集群交互,我想在不使用 COPY 命令的情况下将 CSV 文件(大约 500k 行)加载到 redshift 表中(我确实有插入权限)(因为我没有权限复制到s3)。
你知道它是否可行(使用也许插入),如果是的话,你能帮我吗?
请注意,我拥有的唯一权限是:在集群中选择、插入、更新和删除表。
谢谢。
该COPY
命令是将数据加载到 Redshift 的最佳方式。唯一的另一种方法是INSERT
逐行数据,这可以使用 python 脚本在建立与 Redshift 的连接后pyscopg2
运行SQL 查询来完成。INSERT
因此,只需逐行迭代您的 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
命令更慢且效率更低。
您可以通过 COPY 命令从远程主机加载数据。请参阅http://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-remote-hosts.html