我正在尝试从S3存储桶读取CSV文件,并通过Python在雅典娜中创建表。但是我正在执行它-
开始数据库查询
{'QueryExecutionId':'9cc82243-4220-47d0-8b63-0aa4f01fd590','ResponseMetadata':{'RequestId':'1c74bec6-663a-42ef-b9d1-73c7372eb4e1','HTTPStatusCode':200,'HTTPHeaders' :{'content-type':'application / x-amz-json-1.1','date':'Thu,08 Nov 2018 15:37:11 GMT','x-amzn-requestid':'1c74bec6-663a -42ef-b9d1-73c7372eb4e1','content-length':'59','connection':'keep-alive'},'RetryAttempts':0}}}
开始创建表
回溯(最近通话最近):
文件“ C:/Users/Doc/PycharmProjects/aws-athena-repo/athena/app.py”,第61行,在 QueryExecutionContext = {'数据库':'athenadb'})
_api_call中的第320行的文件“ C:\ Program Files \ Python37 \ lib \ site-packages \ botocore \ client.py” 返回self._make_api_call(operation_name,kwargs)
_make_api_call中的文件“ C:\ Program Files \ Python37 \ lib \ site-packages \ botocore \ client.py”,行623 引发error_class(parsed_response,operation_name)
botocore.errorfactory.InvalidRequestException:调用StartQueryExecution操作时发生错误(InvalidRequestException):第1:8行:输入'CREATE EXTERNAL'处没有可行的选择
这是我的代码示例-
print("Start of DB Query")
# Create a new database
db_query = 'CREATE DATABASE IF NOT EXISTS athenadb;'
response = client.start_query_execution(
QueryString=db_query,
ResultConfiguration={'OutputLocation': 's3://mybucket'})
print(response)
table_query = '''
CREATE EXTERNAL TABLE IF NOT EXISTS `athenadb.testtable`(
`id` int,
`ident` string,
`type` string,
`name` string,
`latitude_deg` double,
`longitude_deg` double,
`continent` string,
`iso_country` string,
`iso_region` string,
`municipality` string,
`scheduled_service` string,
`gps_code` string,
`iata_code` string,
`local_code` string,
`home_link` string,
`wikipedia_link` string,
`keywords` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
WITH SERDEPROPERTIES (
'escape.delim'='\\')
STORED AS TEXTFILE
LOCATION 's3://mybucket/folder/' ;'''
print("Start of table creation")
response1 = client.start_query_execution(
QueryString=table_query,
ResultConfiguration={'OutputLocation': 's3://mybucket'},
QueryExecutionContext={'Database': 'athenadb'})
print(response1)
我不确定问题是否与ROW FORMAT DELIMITED有关。 我认为我的代码很好。
详细步骤将不胜感激!
感谢adavace!
答案 0 :(得分:0)
我将所有字段都用作String,将SERDEPROPERTIES用作OpenCSVSerde