繁体   English   中英

使用python从AWS S3到PostgreSQL Amazon RDS的CSV文件

[英]CSV-File from AWS S3 into PostgreSQL Amazon RDS using python

状态:

  1. 我已经在Amazon RDS的PostgreSQL数据库中创建了新表
  2. 我已将csv文件上传到Amazon S3上的Bucket
  3. 通过lambda函数,我已与Amazon S3存储桶和Amazon RDS连接
  4. 我可以通过以下代码读取csv文件

     import csv, io, boto3 s3 = boto3.resource('s3') client = boto3.client('s3',aws_access_key_id=Access_Key,aws_secret_access_key=Secret_Access_Key) buf = io.BytesIO() s3.Object('bucketname','filename.csv').download_fileobj(buf) buf.seek(0) while True: line = buf.readlines(1) print(line) 

问题:

当我尝试导入psycopg2时,无法导入必要的python库,例如psycopg2,openpyxl等。

    import psycopg2

我得到了错误信息:

    Unable to import module 'myfilemane': No module named 'psycopg2._psycopg'

首先,我没有导入模块“ psycopg2._psycopg”,而是导入了“ psycopg2”。 我不知道后缀“ _psycopg”在哪里

其次,我遵循了文档中的所有步骤: https : //docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html (1.创建目录。 2.将所有Python源文件(.py文件)保存在此目录的根目录下; 3.在目录的根目录下使用pip安装任何库。4.将project-dir目录的内容压缩成目录)

而且我还阅读了以下文档: https : //docs.aws.amazon.com/lambda/latest/dg/vpc-rds-deployment-pkg.html

这同样适用于其他模块或库,例如openpyxl等。我总是被告知“没有名为'OneNameThatIHaveNotImported'的模块”

那么,有没有人有其他想法或知道另一种方式,如何通过lambda函数编辑s3上的csv文件并将已编辑的版本导入rds数据库?

我在这里先向您的帮助表示感谢!

SO答案引用的答案线程将使您走上正确的道路。 基本上,您需要在与AWS lambda函数运行所在的Linux映像匹配的EC2中创建部署程序包。 更好的是,您可以在通过AWS CLI创建部署程序包的同一EC2登台实例中部署lambda函数。

如果您需要开箱即用的修复程序,也可以使用[precompiled lambda软件包] [2]。

[2]: https//github.com/jkehler/awslambda-psycopg2或更一般的说法, https://github.com/Miserlou/lambda-packages

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM