2017-11-10 8 views
-1

この問題は1週間解決できませんでした。 私はヘッダーを含むpythonリストを持っています。これらのヘッダーを使用してOracleデータベースにテーブルを作成したいと思います。問題は50以上のヘッダーがあることです。また、テーブルを作成するために必要なリストは400以上あります。また、すべてのヘッダーには同じ列データ型があります。 私はこの仕事を手動で行う方法を知っています。しかし、私が手動で行うと、私はあまりにも愚かです。だから、私は自動的にそれを行うことができるいくつかの方法を探しています。私は1週間検索されています。しかし、私はまだ解決策を見つけることができませんでした。私を助けてください。どうもありがとうございます。Pythonで非常に多くの列と同じ列のデータ型を持つOracleデータベーステーブルを作成する方法

+0

Hello&welcome to Stack Overflow Edwin!次回に投稿する前に、** [良い質問をするにはどうすればいいですか?](https://stackoverflow.com/help/how-to-ask)**の記事をご覧ください。 あなたの質問に** ** [編集](https://stackoverflow.com/posts/46020976/edit)**をクリックして、有効な** [最小限の、完全で検証可能な例](https: //stackoverflow.com/help/mcve)**、 他に誰もあなたを助けることができません。 – iamdanchiv

+0

私は一週間後、少なくともPythonプログラムからデータベースに接続する方法を見つけたと思いますか? – Goyo

+0

接続はとてもうまく動作します。私はcx_Oracleを使用してOracleデータベースに接続しました。 –

答えて

0

私はGoogleの助けを借りてこの質問を自分で解決しました。 pandas dataframe.to_sqlはエンコーディングの問題があるため使用しませんでした。

解決策1: dffs0には列名のリストがあります。私は各列名にCHAR(100)を追加するのに非常に非効率的な方法を使用しました。

​​

その後、

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

これは私のために動作します。

解決策2: 私はdataframe.to_sqlのエンコードの問題を解決しました。したがって、この便利な方法でOracleデータベースに表をインポートできます。しかし、デフォルトのデータ型は便利ではない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データベースにインポートされるデータフレームです。

両方の解決策が私に役立ちます。 なぜ人々が私の質問に投票したのか分かりません。私はpythonとoracle dbの新しいユーザーです。私はここでこの質問をする前に、10時間以上Googleを持っています。解決策は簡単ですが、新しいユーザーにとってはそれほど簡単ではありません。そして、私は最初の解決策は、それが動作しても、最も効率的な方法だとは思わない。私はまだより効率的な方法を探しています。また、それは友好的でない人もいるようです。とにかく、私はそれを自分で考え出しました。

関連する問題