簡體   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