파이썬 테라데이타 연결
-
Python의
Teradata
데이터베이스 -
PyODBC
라이브러리를 사용하여 Python에서Teradata
에 연결 -
Teradata
SQL을 사용하여 Python에서Teradata
에 연결 -
Teradata
모듈을 사용하여 Python에서Teradata
에 연결
이 Python 문서에서는 Python을 사용하여 Teradata
에 연결하는 방법을 보여줍니다. Teradata
에 연결하고 테이블을 Pandas로 내보내는 옵션은 다양합니다.
이 기사에서는 몇 가지 필수적인 적절한 지침에 대해 설명하고 연결 방법에 대해 논의하기 전에 Teradata
모듈의 작동 방식을 살펴봅니다.
Python의 Teradata
데이터베이스
Teradata
모듈과 함께 Python을 사용하여 Teradata
데이터베이스와의 강력한 상호 작용을 스크립팅할 수 있습니다.
udaSQL
철학을 채택하면 개발자가 외부 구성, 쿼리 밴딩 및 로깅을 수행하는 대신 SQL 논리에 집중할 수 있는 DevOps 지향 SQL 엔진이 제공됩니다.
MIT 라이선스에 따라 Teradata
모듈을 다운로드할 수 있습니다. 다음 단계는 PyPI
에서 패키지를 설치하고 다운로드하는 것입니다.
오픈 소스 특성으로 인해 이 모듈은 커뮤니티에서 지원됩니다. 그러나 고객과 엔지니어는 Teradata
의 ODBC 드라이버
및 sqlalchemy-Teradata
와 같은 타사 응용 프로그램과 이 모듈의 상호 운용성에 대한 지원을 제공받지 않습니다.
PyODBC
라이브러리를 사용하여 Python에서 Teradata
에 연결
Pandas 데이터 프레임은 SQL로 생성하고 Teradata
데이터 프레임을 사용하여 Teradata
에 업로드할 수 있습니다.
- Python에 Pandas가 설치된 환경.
Teradata
데이터베이스의 호스트 이름/IP 주소 및 연결 방법이 알려져 있습니다.Teradata
에 연결하려는 시스템에ODBC
드라이버를 설치해야 합니다.
또는 Teradata
의 데이터베이스 세부 정보가 확실하지 않은 경우 귀사의 DBA에게 문의할 수 있습니다. Teradata
ODBC
드라이버가 없으면 JDBC
및 PySpark
를 사용해야 할 수 있습니다.
이 자습서에서는 다른 방법에 대해서도 설명합니다.
PyODBC
라이브러리 사용
PyODBC
를 사용하면 Python을 사용하여 ODBC
데이터베이스에 쉽게 연결할 수 있습니다. 또한 이 라이브러리는 훨씬 더 많은 Python 기능으로 DB API 2.0 사양을 구현합니다.
Python 환경에서 PyODBC
라이브러리를 설치해야 합니다. 그런 다음 Conda
또는 Pip
을 사용하여 라이브러리를 설치할 수 있습니다.
pip install pyodbc
또는
conda install pyodbc
pip
라는 Python 패키지는 패키지, 라이브러리 및 모듈을 설치하는 데 사용됩니다. 예를 들어 pip
가 PyODBC
모듈과 Teradata
의 ODBC
드라이버를 설치한 후 다음 Python 코드를 실행하여 기존 드라이버를 나열합니다.
Teradata
드라이버 이름에 주의를 기울여 Teradata
가 이 목록에 나타나는지 확인하십시오.
pyodbc.drivers()
Teradata
에서 Pandas 데이터 프레임으로 데이터 추출
다음 코드 펜스는 SQL에서 Pandas 데이터 프레임으로 데이터를 추출하는 방법을 보여줍니다. 그러나 먼저 다음 출력 데이터 프레임을 확인하십시오.
teradata_df.head()
Python의 df.head()
는 항상 5
행 위의 첫 번째 행을 반환합니다. 따라서 여기에서는 0-4
의 Teradata
기본 테이블에서 처음 5개 행을 표시합니다.
teradata_df.info()
연결 문자열에는 호스트 이름
, 드라이버
, 사용자 이름
, 암호
및 인증 프로토콜
과 같은 많은 관련 정보가 있습니다.
Teradata
설정에 따라 선택적 매개변수를 전달해야 할 수도 있습니다. ODBC 호환 매개변수는 PyODBC
로 전달될 수 있습니다.
Pandas에서 Teradata
로 데이터 프레임 업로드
데이터를 가져오는 과정은 간단하지만 데이터를 업로드하는 과정은 더 복잡합니다.
- Pandas 데이터 프레임을 스키마로 변환해야 합니다.
- 데이터 프레임을 청크로 분해해야 합니다.
ODBC
데이터베이스에는 삽입당 최대1MB
가 있으므로 데이터 프레임이 크면 실패합니다. - 레코드를 순차적으로 삽입해야 합니다.
아래 코드에 따라 데이터 프레임을 업로드할 수 있습니다.
cnxn.commit()
print("Query complete. Running time is %s sec/s." % (round(end_time - start_time)))
cnxn.commit()
명령은 변경 사항을 커밋하고 영구적으로 만듭니다.
Teradata
SQL을 사용하여 Python에서 Teradata
에 연결
이 패키지를 사용하기 위해 Teradata
드라이버(이것 제외)를 설치할 필요가 없습니다.
import teradatasql
with teradatasql.connect(host="name", user="name", password="*****") as connect:
df = pd.read_sql(query, connect)
terasql
을 가져오면 Teradata
는 host
, username
및 password
매개 변수와 연결됩니다. 그런 다음 성공적으로 연결되면 쿼리를 읽고 실행합니다.
또 다른 방법은 Giraffez
모듈을 사용하는 것입니다. 이 모듈에는 MLOAD
, FASTLOAD
, BULKEXPORT
등과 같은 많은 유용한 기능이 있습니다. 그러나 초보자를 위한 몇 가지 요구 사항만 있습니다(예: C/C++ 컴파일러, Teradata CLIv2
및 TPT API headers/lib
파일).
13-07-2018
세션이 닫히도록 컨텍스트 관리자가 업데이트되었습니다. DF
를 사용하여 Teradata
로 데이터를 보낼 수 있습니다.
rest
방법을 사용하여 odbc
에 의해 부과된 1MB
제한과 odbc
드라이버에 대한 종속성을 제거할 수 있습니다. 드라이버 인수 대신 호스트 IP 주소를 사용해야 합니다.
import teradata
import pandas as pd
udaExec = teradata.UdaExec(appName="webApp", version="1.0", logConsole=False)
with udaExec.connect(
method="rest_one",
system="DB_Name",
username="user_name",
password="*******",
host="HOST_IP_ADDRESS",
) as connect:
data = [tuple(x) for x in df.to_records(index=False)]
connect.executemany(
"INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)", data, batch=True
)
HY001[ODBC Teradata Driver] 메모리 할당 오류
를 방지하려면 ODBC
Teradata
드라이버를 사용할 때 데이터를 1MB
청크 미만으로 청크하십시오. 예를 들어:
import teradata
import pandas as pd
import numpy as np
udaExec = teradata.UdaExec(appName="test", version="1.0", logConsole=False)
with udaExec.connect(
method="odbc",
system="DBName",
username="User_Name",
password="*******",
driver="Driver_Name",
) as connect:
chunks_df = np.array_split(huge_df, 100)
for i, _ in enumerate(chunks_df):
data = [tuple(x) for x in chuncks_df[i].to_records(index=False)]
connect.executemany(
"INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)", data, batch=True
)
다음은 Teradata
를 Python과 연결하는 또 다른 쉬운 방법입니다.
Teradata
모듈을 사용하여 Python에서 Teradata
에 연결
pip가 이미 설치된 경우 다음 명령을 실행하여 이 모듈을 직접 설치할 수 있습니다.
pip install Teradata
아직 패키지가 없는 경우 https://pypi.org/pypi/teradata/ URL에서 패키지를 다운로드할 수 있습니다.
teradata
패키지를 다운로드한 후 압축을 푼 다음 명령 프롬프트를 사용하여 setup.py가 포함된 디렉터리로 이동하고 다음 명령을 실행하여 설치합니다.
python setup.py install
예제 코드:
import teradata
import sys
udaExec = teradata.UdaExec(appName="HelloPeople", version="1.0", logConsole=False)
session = udaExec.connect(
method="odbc",
dsn="td16vm",
username="",
password="",
autocommit=True,
transactionMode="Teradata",
)
for row in session.execute("select getqueryband();"):
print(row)
for row in session.execute("select top 20 tablename, tablekind from dbc.tables;"):
print(row)
session.close()
input("Type <Enter> to exit...")
Teradata
에 연결하려면 다음 매개변수를 구성해야 합니다. 트랜잭션 모드
는 Teradata
입니다. ODBC
는 연결 방법
(다른 옵션은 REST
)이고 DSN
은 td16vm
이며 컴퓨터에서 다음 매개변수로 구성됩니다.
다음 단계에서는 Teradata
용 가상 머신을 생성해야 합니다. 위 샘플 코드의 실행 결과는 다음과 같습니다.
논의한 바와 같이 Teradata
를 Python에 연결하는 여러 가지 방법이 있습니다. 단계별 지침과 함께 Python에서 Teradata
모듈을 연결하는 모든 가능한 방법이 여기에 공개되었습니다.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn