sql >> Database >  >> RDS >> PostgreSQL

AWS Glue - Bestemmingspostgres-tabel afkappen voorafgaand aan invoegen

Ik heb de DROP/ TRUNCATE . geprobeerd scenario, maar het is niet gelukt met verbindingen die al in Glue zijn gemaakt, maar met een pure Python PostgreSQL-driver, pg8000 .

  1. Download de tar van pg8000 van pypi
  2. Maak een lege __init__.py in de hoofdmap
  3. Zip de inhoud en upload naar S3
  4. Verwijs naar het zip-bestand in het Python lib path van de baan
  5. Stel de DB-verbindingsdetails in als taakparameters (zorg ervoor dat alle sleutelnamen voorafgaan met -- ). Vink het vakje "Versleuteling aan serverzijde" aan.

Dan kunt u eenvoudig een verbinding maken en SQL uitvoeren.

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. Een subquery gebruiken in de Against voor een FULLTEXT-zoekopdracht in Mysql

  2. Demystificerende CXPACKET- en CXCONSUMER-wachttypen in SQL Server

  3. hoe te voorkomen dat u een verkeerde ID krijgt

  4. Werken met JDBC-gegevens in Domo