Python 3.x 如何使用python和boto3将xlsx导入dynamodb
尝试使用LinuxAcademy发布如何将Excel数据导入DynamoDB,但代码发布已经两年了,无法工作。任何提示或建议都会非常有用 对不起,我是新来的Python 3.x 如何使用python和boto3将xlsx导入dynamodb,python-3.x,Python 3.x,尝试使用LinuxAcademy发布如何将Excel数据导入DynamoDB,但代码发布已经两年了,无法工作。任何提示或建议都会非常有用 对不起,我是新来的 我试着将excel电子表格转换成json,然后像LinuxAcademy上的帖子一样上传到DynamoDB。这些指令很旧,它们使用三个脚本上载一个文件。以下是我用来创建lambda AWS python函数的代码 唯一的问题是,它读取excel文件并将其转换为json,并且该文件太大,无法在5分钟超时之前将其接收到DynamoDB中。我可能
我试着将excel电子表格转换成json,然后像LinuxAcademy上的帖子一样上传到DynamoDB。这些指令很旧,它们使用三个脚本上载一个文件。以下是我用来创建lambda AWS python函数的代码 唯一的问题是,它读取excel文件并将其转换为json,并且该文件太大,无法在5分钟超时之前将其接收到DynamoDB中。我可能会将其转换为阶跃函数,但这对我来说很有效
import boto3
import os
import sys
import uuid
import pandas as pd
s3_client = boto3.client('s3')
bucket = "serverless-record-storage-lambda"
def upload_to_dynamodb(report):
df=pd.read_excel(report)
df.columns=["APPLICATION", "FORM_NUMBER", "FILE_DATE", "STATUS_DATE", "STATUS", "STATUS_CODE", "EXPIRATION_DATE", "ESTIMATED COST", "REVISED_COST", "EXISTING_USE", "EXISTING_UNITS", "PROPOSED_USE","PROPOSED_UNITS","PLANSETS", "15_DAY_HOLD?" , "EXISTING_STORIES", "PROPOSED_STORIES", "ASSESSOR_STORIES", "VOLUNTARY", "PAGES", "BLOCK", "LOT", "STREET_NUMBER", "STREET_NUMBER_SFX", "AVS_STREET_NAME", "AVS_STREET_SFX", "UNIT", "UNIT_SFX", "FIRST_NAME", "LAST_NAME", "CONTRACTORPHONE",
"COMPANY_NAME", "STREET_NUMBER", "STREET", "STREET_SUFFIX", "CITY", "STATE", "ZIP_CODE", "CONTACT_NAME", "CONTACT_PHONE", "DESCRIPTION" ]
# Clean-up the data, change column types to strings to be on safer side :)
df=df.replace({'-': '0'}, regex=True)
df=df.fillna(0)
for i in df.columns:
df[i] = df[i].astype(str)
# Convert dataframe to list of dictionaries (JSON) that can be consumed by any no-sql database
myl=df.T.to_dict().values()
# Connect to DynamoDB using boto
resource = boto3.resource('dynamodb', region_name='us-west-2')
# Connect to the DynamoDB table
table = resource.Table('permitdata')
# Load the JSON object created in the step 3 using put_item method
for permit in myl:
table.put_item(Item=permit)
def handler(event, context):
for record in event['Records']:
print(record)
bucket = record['s3']['bucket']['name']
print(bucket)
key = record['s3']['object']['key']
print(key)
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
upload_path = '/tmp/resized-{}'.format(key)
s3_client.download_file(bucket, key, download_path)
upload_to_dynamodb(download_path)
def main():
handler(event, None)
if __name__ == "__main__":
main()
欢迎来到SO。请更加明确,分享您尝试过的代码和您遇到的具体错误,请参阅