Пример #1
0
def test_ignores_sqlalchmey_text_obj(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        text(("INSERT INTO test_s3_copy_into_redshift(i, f, c, v)"
              " values(3342, 32434.0, 'a', 'gfhsdgaf'), (3343, 0, 'b', NULL), "
              "(0, 32434.0, NULL, 'gfhsdgaf')")))

    # SQL command as a SQLAlchemy TextClause objetct is ignored and the default engine executes
    # the command.
    fetch_values_from_table_and_assert(redshift)
Пример #2
0
def test_inverted_credentials_string(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute((
        "{COMMAND} test_s3_copy_into_redshift {COLUMNS} from '{LOCATION}' "
        "credentials 'aws_secret_access_key=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;"
        "aws_access_key_id=AAAAAAAAAAAAAAAAAAAA'").format(
            COMMAND="COPY",
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="",
        ))

    # Assert order for credentials is irrelavant
    fetch_values_from_table_and_assert(redshift)
Пример #3
0
def test_s3_copy_columns(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        COPY_TEMPLATE.format(
            COMMAND="copy",
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="(i, f, c, v)",
            FROM="from",
            CREDENTIALS="credentials",
            OPTIONAL_ARGS="",
        ))

    # Assert support for Columns
    fetch_values_from_table_and_assert(redshift)
Пример #4
0
def test_case_sensitivity(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        COPY_TEMPLATE.format(
            COMMAND=randomcase("copy"),
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="",
            FROM=randomcase("from"),
            CREDENTIALS=randomcase("CREDENTIALS"),
            OPTIONAL_ARGS="",
        ))

    # Assert case sensitivity doesn't affect parsing.
    fetch_values_from_table_and_assert(redshift)
Пример #5
0
def test_s3_copy_into_redshift(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        COPY_TEMPLATE.format(
            COMMAND="COPY",
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="",
            FROM="from",
            CREDENTIALS="credentials",
            OPTIONAL_ARGS="",
        ))

    # Assert the values fetched for the database are the same as the values in the data.
    fetch_values_from_table_and_assert(redshift)
Пример #6
0
def test_random_spacing(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        COPY_TEMPLATE.format(
            COMMAND="COPY",
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="( i ,   f,  c,    v )",
            FROM="from",
            CREDENTIALS="credentials",
            OPTIONAL_ARGS="",
        ).replace(" ", "    "))

    # Assert irregular spaces doesn't affect parsing.
    fetch_values_from_table_and_assert(redshift)
Пример #7
0
def test_optional_keywords(redshift):
    setup_table_and_bucket(redshift)

    redshift.execute(
        COPY_TEMPLATE.format(
            COMMAND="COPY",
            LOCATION="s3://mybucket/file.csv",
            COLUMNS="",
            FROM="from",
            CREDENTIALS="with credentials as",
            OPTIONAL_ARGS="GZIP delimiter '|' region 'us-west-2'",
        ))

    # Assert optional keywords are ignored.
    fetch_values_from_table_and_assert(redshift)