반응형
SAP BW 에서도 데이터를 가져와 했다.
SAP은 처음이다. (RFC와 ODATA는 해봤지만)
SAP 엔지니어가 jdbc를 통해 SAP에 붙을 수 있도록 환경 설정을 해주었다.
hdbcli 라이브러를 이용해 접속을 해보려고한다.
일단 hdbcli 라이브러리를 S3에 업로드하고,
Glue 에서
[Advanced properties] - [Python library path] 에 업로드한 라이브러리의 S3 경로를 입력해준다.
s3://bucket_name/hdbcli-2.14.23-cp34-abi3-manylinux1_x86_64.whl
일단 테이블 정보를 확인해본다.
from hdbcli import dbapi
import os
import pandas as pd
## SAP BW connection
conn = dbapi.connect(
address='host',
port=port,
user='user',
password='password',
database='database'
)
cursor = conn.cursor()
sql = 'SELECT * FROM SYS.TABLE_COLUMNS WHERE TABLE_NAME="T100"'
cursor = conn.cursor()
cursor.execute(sql)
for row in cursor:
print(row)
접속이 정상적으로 이루어지는 것을 확인했다.
쿼리 문법을 잘 몰라 헤맨부분인데,
쿼리할때 테이블 명을
SAPHANADB."TABLENAME" 이렇게 줘야 하더라..
그럼 이제 S3에 저장한다.
from hdbcli import dbapi
import os
import pandas as pd
## SAP BW connection
conn = dbapi.connect(
address='host',
port=port,
user='user',
password='password',
database='database'
)
cursor = conn.cursor()
cursor.execute('SELECT ARBGB, MSGNR, SPRSL, TEXT FROM SAPHANADB."T100"')
row = cursor.fetchall()
Dataname = ['ARBGB','MSGNR','SPRSL','TEXT']
df = pd.DataFrame(row, columns=Dataname)
print(df)
conn.close()
bucket_name = "bucket_name"
prefix = "prefix"
tempFileName = "file.parquet"
result = f"s3://{bucket_name}/{prefix}/{tempFileName}"
df.to_parquet(result
, engine='pyarrow'
, index=False)
print(f"complete ==> {result}")
반응형
'AWS' 카테고리의 다른 글
AWS Glue로 S3 에 저장된 parquet 파일 읽어보기 (0) | 2023.01.05 |
---|---|
AWS Glue에서 ngdbc 를 이용해 SAP HANA CLOUD 데이터를 S3에 저장하기 (0) | 2023.01.04 |
AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 파티션 구조로 저장하기 (0) | 2023.01.02 |
AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 저장하기 (0) | 2022.12.26 |
AWS Glue에서 pymssql 을 이용해 MSSQL 데이터를 S3에 저장하기 (0) | 2022.12.26 |