Mysql
 sql >> база данни >  >> RDS >> Mysql

Автоматизирайте масовото зареждане на данни от s3 към екземпляр на Aurora MySQL RDS

Подходът е както е посочено по-горе, има задействане на S3 събитие и ламбда задание, слушащо местоположението на кофата/обекта s3. Веднага след като файл бъде качен в местоположението s3, ламбда заданието ще се изпълни и в ламбда можете да конфигурирате да извиквате AWS Glue задание. Това е точно това, което сме направили и е пуснато успешно на живо. Lambda има 15-минутен живот и трябва да отнеме по-малко от минута, за да задейства/стартира Glue задача.

Моля, намерете тук примерен източник за справка.

from __future__ import print_function
import json
import boto3
import time
import urllib

print('Loading function')

s3 = boto3.client('s3')
glue = boto3.client('glue')

def lambda_handler(event, context):
    gluejobname="your-glue-job-name here"

    try:
        runId = glue.start_job_run(JobName=gluejobname)
        status = glue.get_job_run(JobName=gluejobname, RunId=runId['JobRunId'])
        print("Job Status : ", status['JobRun']['JobRunState'])
    except Exception as e:
        print(e)
        print('Error getting object {} from bucket {}. Make sure they exist '
              'and your bucket is in the same region as this '
              'function.'.format(source_bucket, source_bucket))
    raise e

За да създадете Lambda функция, отидете на AWS Lambdra->Създаване на нова функция от нулата->Избор на S3 за събитие и след това конфигурирайте местоположенията на кофата S3, префиксите според изискванията. След това копирайте и поставете примерния код по-горе, областта на вградения код и конфигурирайте името на заданието за лепило според нуждите. Моля, уверете се, че имате всички необходими IAM роли/настройка за достъп.

Работата с лепило трябва да има възможност за свързване с вашата Aurora и след това можете да използвате командата „ЗАРЕДИ ОТ S3.....“, предоставена от Aurora. Уверете се, че всички настройки/конфигурации на група параметри са направени според нуждите.

Кажете ми, ако има проблеми.

АКТУАЛИЗАЦИЯ:ПРИМЕРЕН кодов фрагмент за ЗАРЕЖДАНЕ ОТ S3:

conn = mysql.connector.connect(host=url, user=uname, password=pwd, database=dbase)
cur = conn.cursor()
cur, conn = connect()
createStgTable1 = "DROP TABLE IF EXISTS mydb.STG_TABLE;"
createStgTable2 = "CREATE TABLE mydb.STG_TABLE(COL1 VARCHAR(50) NOT NULL, COL2 VARCHAR(50), COL3 VARCHAR(50), COL4 CHAR(1) NOT NULL);"
loadQry = "LOAD DATA FROM S3 PREFIX 's3://<bucketname>/folder' REPLACE INTO TABLE mydb.STG_TABLE FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 1 LINES (@var1, @var2, @var3, @var4) SET col1= @var1, col2= @var2, col3= @var3, [email protected];"
cur.execute(createStgTable1)
cur.execute(createStgTable2)
cur.execute(loadQry)
conn.commit()
conn.close()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Недефинирана функция mysql_connect()

  2. Колко колони в MySQL таблицата

  3. Импортиране на данни от Excel в PHP

  4. MySQL Търсене на суфикс в пълен текст (булев режим) -(*ябълка)

  5. Как да съхранявате 128-битово число в една колона в MySQL?