将csv加载到redshift而不经过S3

Ami*_*ine 6 amazon-s3 amazon-redshift import-csv

我正在使用 SQL Workbench /J 与 Redshift 集群交互,我想将 CSV 文件(大约 500k 行)加载到 Redshift 表中(我有插入权限),而不使用 COPY 命令(因为我没有权限复制到s3)。

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

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

谢谢。

Yan*_*kee 1

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])) 
Run Code Online (Sandbox Code Playgroud)

row[0],row[1],row[2],row[3]一行中所有列的数据在哪里?

请记住,逐行插入将比COPY命令慢得多且效率低。