首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从S3存储桶中获取文件(.csv)并复制到RDS

从S3存储桶中获取文件(.csv)并复制到RDS
EN

Stack Overflow用户
提问于 2018-01-22 18:24:12
回答 2查看 1.1K关注 0票数 0

我将连接到S3存储桶,获取csv文件并将行复制到RDS DB。在这个脚本中我们使用arcpy,我对这个包不是很熟悉,我只是尝试直接从S3存储桶中获取csv文件作为源代码,而不是将其下载到服务器上。代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
import arcpy
from boto.s3.key import Key
import StringIO
import pandas as pd
import boto
import boto.s3.connection

access_key = ''
secret_key = ''
conn = boto.connect_s3(aws_access_key_id = access_key,aws_secret_access_key = secret_key,host = 's3.amazonaws.com')

b = conn.get_bucket('mybucket')
#for key in b.list:
b_key = b.get_key('file1.csv')

arcpy.env.overwriteOutput = True

b_url = b_key.generate_url(0, query_auth=False, force_http=True)
print b_url

##Read file
k = Key(b,file1.csv)
content = k.get_contents_as_string()
sourcefile_csv = pd.read_csv(StringIO.StringIO(content))

##CopyRows_management (in_rows, out_table, {config_keyword})
#http://pro.arcgis.com/en/pro-app/tool-reference/data-management/copy-rows.htm

arcpy.CopyRows_management(sourcefile_csv, "RDSTablePath", "")

print("copy rows done")

错误:在CopyRows arcgisscripting.ExecuteError中。执行失败参数无效

如果我们使用服务器上的路径作为源路径,如下所示,它工作得很好:

代码语言:javascript
代码运行次数:0
运行
复制
sourcefile_csv = "D:\\DEV\\file1.csv"
arcpy.CopyRows_management(sourcefile_csv, "RDSTablePath", "")

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-04-25 22:33:13

看起来您正在尝试使用Pandas数据帧作为使用CopyRows_management读取的表?我不认为这是函数的有效输入,因此出现“参数无效”错误。documentation说明in_rows应该是“要复制的要素类、图层、表或表视图中的行”。我认为在这里使用熊猫是不必要的。

因此,要么将csv保存在脚本可以访问它的地方(就像您在服务器上使用路径时在中所做的那样),或者,如果您不想将文件保存在任何地方,只需读取csv的内容并使用Insert Cursor遍历它,将其写入到表/要素类中。

有关如何使用csv模块从字符串中读取csv的信息,请参阅this post。然后循环遍历csv的行,并使用插入游标写入表。

票数 0
EN

Stack Overflow用户

发布于 2018-04-25 22:54:12

如果你的RDS恰好是一个Aurora,那么你应该看看Loading Data from S3特性,你可以跳过代码,只需逐行加载到你的DB中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48379342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档