python - 如何将数据从 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!')
}
解决方案
推荐阅读
- vba - VBA Word 宏允许用户多次选择和复制文本
- coq - 如何证明一阶语言的术语是有根据的?
- python-3.x - 向返回 boto3 对象的函数添加类型提示?
- visual-studio-2017 - VSTO 4/XML:如何使某些控件可选地可见
- entity-framework - 连接到 AWS 时表“xxxx.AspNetUsers”不存在
- ruby-on-rails - 如何在 Kubernetes 中运行延迟作业?
- c# - 为什么编译器不能通过内联优化闭包变量?
- php - php中来自json数组的数据
- javascript - 如何使用 Pug 将 Markdown 文件目录转换为 HTML 页面?
- angular - Angular:img src 中的“警告:清理不安全的 URL 值”