Создание новой таблицы DynamoDB из CSV - PullRequest
0 голосов
/ 02 августа 2020

Я изо всех сил пытаюсь найти способ создать новую таблицу Dynamodb из файла csv. Я могу создать таблицу, но мне нужно иметь возможность определять схему с помощью csv.

То, что я прикрепил, создает таблицу, но мне нужно заранее определить схему. Я хочу, чтобы лямбда-функция считывала файл csv и строила на его основе схему таблицы.

import os
import boto3
import botocore.session

region = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')
session = botocore.session.get_session()
dynamo = session.create_client('dynamodb', region_name=region) 


s3 = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    obj = s3.get_object(Bucket=bucket, Key=key)
    
    row = obj['Body'].read().decode("utf-8"). split ('\n')
    cols = obj['Body'].read().decode("utf-8"). split('\n')[0].split(',')

    table = dynamodb.Table(key)
    dynamodb.create_table(
      TableName=key.strip('.csv'),
      
      KeySchema=[
          {
              'AttributeName': 'first',
              'KeyType': 'HASH'
          },
      ],
      
      # mytable.meta.client.get_waiter('table_exists').wait(TableName=key)
      # print('Table is ready, please continue to isert data.')
      
      AttributeDefinitions=[
          {
              'AttributeName': 'first',
              'AttributeType': 'S'
          },
      ],
    )

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Я бы посмотрел, что вы можете позаимствовать из этого сообщения в блоге в блоге о базе данных AWS о том, чтобы сделать именно это.

0 голосов
/ 02 августа 2020

вы можете использовать python в lamda для чтения заголовка csv и создания динамического c кода

см. Ниже: Чтение только имен столбцов в файле csv

Надеюсь, это stati c, или вы знаете, как извлечь ключ из csv. Остальное, вы должны быть в состоянии связать вместе.

Вывод этого извлечения заголовка на основе Python можно затем использовать в качестве входного файла для сценария создания таблицы на основе java, или я бы сказал, используйте сокращенный код так как это будет легко сшить вместе в python динамически обратитесь к блогу AWS для сокращенных примеров кодов здесь https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html

...