PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

AWS Glue - Obcinanie docelowej tabeli postgres przed wstawieniem

Próbowałem DROP/ TRUNCATE scenariusza, ale nie udało mi się tego zrobić z połączeniami już utworzonymi w Glue, ale z czystym sterownikiem Python PostgreSQL, pg8000 .

  1. Pobierz tar pg8000 z pypi
  2. Utwórz pusty __init__.py w folderze głównym
  3. Skompresuj zawartość i prześlij do S3
  4. Odwołaj się do pliku zip w Python lib path pracy
  5. Ustaw szczegóły połączenia z bazą danych jako parametry zadania (należy poprzedzić wszystkie nazwy kluczy przedrostkiem -- ). Zaznacz pole „Szyfrowanie po stronie serwera”.

Następnie możesz po prostu utworzyć połączenie i wykonać SQL.

import sys
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job

import pg8000

args = getResolvedOptions(sys.argv, [
    'JOB_NAME',
    'PW',
    'HOST',
    'USER',
    'DB'
])
# ...
# Create Spark & Glue context

job = Job(glueContext)
job.init(args['JOB_NAME'], args)

# ...
config_port = 5432
conn = pg8000.connect(
    database=args['DB'], 
    user=args['USER'], 
    password=args['PW'],
    host=args['HOST'],
    port=config_port
)
query = "TRUNCATE TABLE {0};".format(".".join([schema, table]))
cur = conn.cursor()
cur.execute(query)
conn.commit()
cur.close()
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. Polecenie inspectdb Django 1.8 nie widzi widoków PostgreSQL zgodnie z dokumentacją

  2. Postgres:konwertuj jeden wiersz na wiele wierszy (unpivot)

  3. Jaka jest różnica między cudzysłowami pojedynczymi a cudzysłowami podwójnymi w PostgreSQL?

  4. Zablokuj na SELECT, aby inny proces nie otrzymał starych danych

  5. Kolumna dynamiczna w postgresie instrukcji SELECT