Python 通过气流将S3文件传输到Mysql AWS

Python 通过气流将S3文件传输到Mysql AWS,python,mysql,amazon-s3,airflow,Python,Mysql,Amazon S3,Airflow,在过去的几个月里,我一直在学习如何使用Apache Airflow,我想看看是否有人有过将CSV文件从S3传输到AWS(RDS)中的Mysql数据库的经验。或者从我的本地驱动器到MySQL 我设法将所有东西都发送到S3存储桶中,并使用aiffort.hooks.S3_hook将它们存储在云中,效果非常好。我用boto3来做这个。 现在我想把这个文件推送到我在RDS中创建的MySQL数据库,但我不知道怎么做。我是否需要使用MySQL钩子并在那里添加凭据,然后编写python函数 此外,它不必是S3

在过去的几个月里,我一直在学习如何使用Apache Airflow,我想看看是否有人有过将CSV文件从S3传输到AWS(RDS)中的Mysql数据库的经验。或者从我的本地驱动器到MySQL

我设法将所有东西都发送到S3存储桶中,并使用aiffort.hooks.S3_hook将它们存储在云中,效果非常好。我用boto3来做这个。 现在我想把这个文件推送到我在RDS中创建的MySQL数据库,但我不知道怎么做。我是否需要使用MySQL钩子并在那里添加凭据,然后编写python函数

此外,它不必是S3到Mysql,如果更容易的话,我也可以尝试从本地驱动器到Mysql


任何帮助都将是惊人的

气流具有
S3ToMySqlOperator
,可通过以下方式导入:

from airflow.providers.mysql.transfers.s3_to_mysql import S3ToMySqlOperator
请注意,您需要安装MySQL提供程序

对于气流1.10系列():

对于气流>=2.0(目前处于测试阶段):

用法示例:

S3ToMySqlOperator(
    s3_source_key='myfile.csv',
    mysql_table='myfile_table',
    mysql_duplicate_key_handling='IGNORE',
    mysql_extra_options="""
            FIELDS TERMINATED BY ','
            IGNORE 1 LINES
            """,
    task_id= 'transfer_task',
    aws_conn_id='aws_conn',
    mysql_conn_id='mysql_conn',
    dag=dag
)

气流具有可通过以下方式导入的
S3ToMySqlOperator

from airflow.providers.mysql.transfers.s3_to_mysql import S3ToMySqlOperator
请注意,您需要安装MySQL提供程序

对于气流1.10系列():

对于气流>=2.0(目前处于测试阶段):

用法示例:

S3ToMySqlOperator(
    s3_source_key='myfile.csv',
    mysql_table='myfile_table',
    mysql_duplicate_key_handling='IGNORE',
    mysql_extra_options="""
            FIELDS TERMINATED BY ','
            IGNORE 1 LINES
            """,
    task_id= 'transfer_task',
    aws_conn_id='aws_conn',
    mysql_conn_id='mysql_conn',
    dag=dag
)

从未在amazon上使用过MySQL。。但是MySQL应该支持可以很快导入CSV的功能,假设amazon没有从源代码中删除CSV并且编译时没有..但是请记住,当使用本地选项时,您的MySQL客户端必须先将文件上传到服务器上,以降低internet连接速度。当等待超时/交互超时设置为低。。因此,您可能希望在运行时使用
SET SESSION wait_timeout=”来更改它;设置会话交互_超时=。。。还不确定服务器/客户端中的MySQL协议或amazone防火墙是否会限制这些文件的上传/下载速度,从而为其他客户端节省带宽。使用Postgress是否更好?你有什么建议吗?从未在amazon上使用过MySQL。。但是MySQL应该支持可以很快导入CSV的功能,假设amazon没有从源代码中删除CSV并且编译时没有..但是请记住,当使用本地选项时,您的MySQL客户端必须先将文件上传到服务器上,以降低internet连接速度。当等待超时/交互超时设置为低。。因此,您可能希望在运行时使用
SET SESSION wait_timeout=”来更改它;设置会话交互_超时=。。。还不确定服务器/客户端中的MySQL协议或amazone防火墙是否会限制这些文件的上传/下载速度,从而为其他客户端节省带宽。使用Postgress是否更好?你推荐什么?