sql >> Databasteknik >  >> RDS >> PostgreSQL

AWS Glue - Trunkera destination postgres-tabellen före insättning

Jag har provat DROP/ TRUNCATE scenario, men har inte kunnat göra det med anslutningar som redan skapats i Glue, utan med en ren Python PostgreSQL-drivrutin, sid8000 .

  1. Ladda ner tar för pg8000 från pypi
  2. Skapa en tom __init__.py i rotmappen
  3. Zip upp innehållet och ladda upp till S3
  4. Referera till zip-filen i Python lib path av jobbet
  5. Ange DB-anslutningsdetaljerna som jobbparametrar (se till att alla nyckelnamn läggs före -- ). Markera rutan "Kryptering på serversidan".

Sedan kan du helt enkelt skapa en anslutning och köra 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. Kan jag använda CASE-satsen i ett JOIN-tillstånd?

  2. Vad är ett index i SQL?

  3. Ta bort rader från tabellen, förutom angivet antal (gräns för antal rader)

  4. psql:FATAL:kunde inte öppna filbas/11951/11717:Skrivskyddat filsystem