将 csv 加载到红移而不经过 S3



我正在使用 SQL 工作台/J 与红移集群进行交互,我想将 CSV 文件(大约 500k 行(加载到 redshift 表中(我确实有插入权限(而不使用 COPY 命令(因为我没有复制到 s3 的权限(。

你知道这是否可行(使用插入(,如果是,你能帮我吗?

请注意,我拥有的唯一权限是:选择,插入,更新和删除集群中的表。

谢谢。

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命令慢得多,效率也更低。

您可以 COPY 命令从远程主机加载数据。 请参阅 http://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-remote-hosts.html

最新更新