Копирование сжатого файла из S3 в красное смещение (stl-load-error) - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь скопировать данные из S3 в амазонское красное смещение с помощью скрипта Python

command = 

    ("COPY {qualname}\n"
                "FROM 's3://{keypath}' \n"
                "CREDENTIALS 'aws_access_key_id={key};aws_secret_access_key={secret}' "
                "{gzip} "
                "{null_as} "
                #"{emptyasnull}"
                "CSV IGNOREHEADER 1;").format(qualname=qualname,
                                 keypath=url,
                                 key=aws_access_key_id,
                                 secret=aws_secret_access_key,
                                 gzip="GZIP " if compress else " ",
                                 null_as="NULL AS '{}'".format(null_as) if null_as is not None else "",
                                 emptyasnull="EMPTYASNULLL " if emptyasnull else " ")```
  • keypath - это s3: // {bucket - name} / daily-sku-benefits / 2018-12-27
  • qualname - это имя таблицы

Однако я получаю сообщение об ошибке:

(psycopg2.InternalError) Загрузить в таблицуОшибка daily_sku_benefits.Проверьте системную таблицу 'stl_load_errors' для деталей.[SQL: "COPY daily_sku_benefits \ nFROM 's3: // {имя_хранилища} /daily-sku-benefits/2018-12-27.csv.gzip' \ nCREDENTIALS 'aws_access_key_id = {ключ доступа}; aws_secret_access_key = {secret-ключ} GZIP CSV IGNOREHEADER 1; "] (Справочная информация об этой ошибке: http://sqlalche.me/e/2j85)

И при проверке stl_load_error Я получаю эту ошибку:

Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]  

кто-нибудь есть какие-либо идеи по этому поводу?

1 Ответ

0 голосов
/ 27 декабря 2018

Ошибка ясно показывает вам способ решения проблемы, ваши timestamp данные должны иметь формат [YYYY-MM-DD HH24:MI:SS].

Ваши данные должны выглядеть ниже (у меня есть разделитель в виде канала (|), хотя, тоже хорошо),

 Column1|Columnd2|created_at
 Test1|Test description1|2018-05-10 23:54:51
 Test2|Test description2|2018-05-17 22:15:53

Например, таблица со структурой -

create table daily_sku_benefits(
Colunm1 varchar(55),
Colunm2 varchar(255),
updated_at timestamp);

Еще один трюк, который вы могли бы применить, потому что вполне возможно, что вы завершите данные, возможно, не bad, это может быть some percentage, следовательно, вы можете использовать свойство MAXERROR в команде Copy.Здесь идет объяснение Maxerror .

Надеюсь, это поможет.

...