2017-11-10 5 views
-1

일주일 동안이 문제를 해결할 수 없습니다. 헤더를 포함하는 파이썬 목록이 있습니다. 이 헤더를 사용하여 Oracle 데이터베이스에 테이블을 생성하고 싶습니다. 문제는 50 개 이상의 헤더가 있다는 것입니다. 또한 표를 만드는 데 필요한 400 개 이상의 목록이 있습니다. 또한 모든 헤더에는 동일한 열 데이터 유형이 있습니다. 이 작업을 수동으로 수행하는 방법을 알고 있습니다. 그러나, 내가 수동으로한다면, 나는 너무 어리 석다. 그래서, 나는 그것을 자동으로 할 수있는 몇 가지 방법을 찾고있다. 나는 일주일 동안 수색되었다. 하지만 여전히 해결책을 찾지 못했습니다. 도와주세요. 감사합니다 youuuuuuuuu.파이썬에서 너무 많은 열과 동일한 열 데이터 유형으로 Oracle 데이터베이스 테이블을 만드는 방법

+0

Hello & welcome to Stack Overflow 에드윈! 다음에 게시하기 전에 ** [좋은 질문을하는 방법?] (https://stackoverflow.com/help/how-to-ask) ** 문서를 참조하십시오. 질문 **에서 ** [편집] (https://stackoverflow.com/posts/46020976/edit) **을 클릭하고 ** [최소, 완전하고 검증 가능한 예] (https : //stackoverflow.com/help/mcve)**, 다른 사람은 아무도 당신을 도울 수 없습니다. – iamdanchiv

+0

일주일이 지난 후에 적어도 파이썬 프로그램에서 데이터베이스에 연결하는 방법을 찾았을 것 같습니까? – Goyo

+0

아주 잘 연결됩니다. Oracle db에 연결하기 위해 cx_Oracle을 사용했습니다. –

답변

0

좋아, 나는이 질문을 Google의 도움으로 직접 해결했습니다. 인코딩 문제가있어서 pandas dataframe.to_sql을 사용하지 않았습니다.

해결책 1 : dffs0에는 열 이름 목록이 있습니다. 방금 각 열 이름에 CHAR (100)을 추가하는 데 매우 비효율적 인 방법을 사용했습니다. 그런 다음

col_name1 = [] 
for col_name in dffs0: 
    col_name = col_name + " CHAR(100)" 
    col_name1.append(col_name) 

sql='create table test1 %s' % (col_name1) 
sql = sql.replace('[','(').replace(']',')').replace("'",'') 
cursor.execute(sql) 

이 나를 위해 작동합니다.

해결책 2 : 나는 dataframe.to_sql의 인코딩 문제를 해결했습니다. 따라서이 편리한 방법을 사용하여 테이블을 Oracle DB로 가져올 수 있습니다. 그러나 기본 데이터 유형은 편리하지 않은 clob입니다. 따라서 for 루프를 사용하여 열의 데이터 유형을 변경했습니다.

dffs1.to_sql("fs_%s" %(id), engine, dtype={col_name: NVARCHAR(1000) for col_name in cols},if_exists='replace') 

cols에는 열 이름 목록이 있습니다. dffs1은 Oracle 데이터베이스로 가져올 데이터 프레임입니다.

두 가지 솔루션이 모두 유용합니다. 왜 사람들이 내 질문에 투표를했는지 모르겠습니다. 저는 파이썬과 오라클 db의 새로운 사용자입니다. 내가이 질문을하기 전에 여기에 10 시간 이상 구글이있다. 해결책은 간단하지만 새로운 사용자에게는 쉽지 않습니다. 그리고 첫 번째 솔루션이 작동한다고해도 가장 효율적인 방법이라고 생각하지 않습니다. 나는 아직도 더 효율적인 방법을 찾고있다. 또한 일부 사람들은 그다지 친숙하지 않은 것으로 보입니다. 어쨌든, 나 혼자서 알아 냈어.