首页 > 解决方案 > 如何将数据从 S3 存储桶加载到 MySQL RDS 数据库?

问题描述

但是对于存储桶中的每个文件,RDS 中都有一个表,并且特定的文件数据应该只进入特定的表。每当文件在存储桶中上传时,它应该触发并应该转到 RDS 表。

为此,我使用了 Lambda 函数,但对我而言,文件数据将进入 RDS 中的每个表,但我需要数据应该只进入特定表。

谁可以帮我这个事 ?

这是代码

import json
import boto3
import csv
import mysql.connector
from mysql.connector import Error
from mysql.connector import errorcode
s3_client = boto3.client('s3')

def lambda_handler(event, context):
    # TODO implement
    # print(event)
    bucket = event['Records'][0]['s3']['bucket']['name']
    csv_file = event['Records'][0]['s3']['object']['key']
    csv_file_obj = s3_client.get_object(Bucket=bucket, Key=csv_file)
    lines = csv_file_obj['Body'].read().decode('utf-8').split()
    results_emp1 = []
    for row in csv.DictReader(lines):
        results_emp1.append(row.values())
    print(results_emp1)
    
    results_emp2 = []
    for row in csv.DictReader(lines):
        results_emp2.append(row.values())
    print(results_emp2)
    
    connection = mysql.connector.connect(host='xxxxxxxxxx',database='employeedb',user='xxxxxx',password='xxxxxxx')
    
    mysql_emp1sql_insert_query = "INSERT INTO employee1 (empid, empname, empaddress) VALUES (%s, %s, %s)"
    cursor = connection.cursor()
    cursor.executemany(mysql_emp1sql_insert_query,results_emp1)
    connection.commit()
    print(cursor.rowcount, "Record inserted successfull into employee1 table")
    
    mysql_emp2sql_insert_query = "INSERT INTO employee2 (empid, empname, empaddress) VALUES (%s, %s, %s)"
    cursor = connection.cursor()
    cursor.executemany(mysql_emp2sql_insert_query,results_emp2)
    connection.commit()
    print(cursor.rowcount, "Record inserted successfull into employee2 table")
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }
    



    
    

标签: pythonamazon-web-servicesamazon-s3aws-lambdaamazon-rds

解决方案


推荐阅读