有没有办法将我在远程服务器中的.gz文件加载到redshift数据库表(postgresql)中,而不先在s3存储桶中加载它?
我看到了两个选项: -
.Update
命令。这给了我一个错误"语法错误在程序或附近#34;
无法在python中找到使用psycopg2库的方法。这是为python编写的代码。
"copy <tablename> from program "gzip -d <file location in remote server> with delimeter tab '\t' "
感谢。
答案 0 :(得分:0)
您可以使用SSH直接从远程主机COPY
。出于实际目的,这意味着远程主机需要是* nix机器,而不是Windows。
然而,您仍然需要使用S3来存储清单文件,该文件指定连接详细信息和要运行的命令,例如上面的gzip
命令。
答案 1 :(得分:-1)
您可以使用“INSERT”命令。您可以从gzip文件中读取每一行并将其插入表中。这样您就不需要S3存储桶,因为您没有使用“COPY”命令。例如:
with gzip.open('<gzipfile>','r') as l:
for line in l:
b=line.split('\t') # tab delimited
# Handling null values
for k in range(len(b)):
if b[k]=='\N':
b[k]=None
b=tuple(b)
sql= "INSERT INTO"+ " " + <tablename> + " VALUES (" + ",".join(["?"]*(len(b))) + ")"
cursor.execute(sql,b)