sql >> データベース >  >> RDS >> PostgreSQL

AWSGlue-挿入する前に宛先postgresテーブルを切り捨てます

    DROP/ TRUNCATEを試しました シナリオですが、Glueで既に作成されている接続では実行できませんが、純粋なPythonPostgreSQLドライバー pg8000 。

    1. pg8000のtarをpypiからダウンロード
    2. 空の__init__.pyを作成します ルートフォルダ内
    3. コンテンツを圧縮してS3にアップロード
    4. Python lib pathでzipファイルを参照します 仕事の
    5. DB接続の詳細をジョブパラメータとして設定します(すべてのキー名の前に必ず--を付けてください )。 [サーバー側の暗号化]チェックボックスをオンにします。

    次に、接続を作成して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. ミリ秒の精度のタイムスタンプ:MySQLでそれらを保存する方法

    2. mysqlにはOracleの分析関数と同等のものがありますか?

    3. MySQLに人間の名前を保存するというジレンマを解決し、識別可能性と類似した名前の検索の両方を維持するにはどうすればよいですか?

    4. mysqlDBのバックアップが作成されていません