2012-07-03 22 views
6

pymssqlとPandas sqlパッケージを使用して、SQLからframe_queryでPandas dataframeにデータをロードしています。Python PandasデータフレームをMS SQLにエクスポートできますか?

私はwrite_frameを使用してSQLデータベースに戻したいと思いますが、これに関する多くの文書を見つけることができませんでした。特に、flavor = 'sqlite'というパラメータがあります。今のところパンダはSQLiteにしかエクスポートできないということですか?私の会社はMS SQL Server 2008を使用しているので、エクスポートする必要があります。

答えて

5

残念ながら、はい。現在sqlitewrite_frameでサポートされている唯一の「フレーバー」です。シンプルなwrite_frameはいえ、かなり簡単なはず書くhttps://github.com/pydata/pandas/blob/master/pandas/io/sql.py#L155

def write_frame(frame, name=None, con=None, flavor='sqlite'): 
    """ 
    Write records stored in a DataFrame to SQLite. The index will currently be 
    dropped 
    """ 
    if flavor == 'sqlite': 
     schema = get_sqlite_schema(frame, name) 
    else: 
     raise NotImplementedError 

参照してください。例えば、このようなものは、(未テスト!)うまくいくかもしれない:

import pymssql               
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase') 
cur = conn.cursor()             

# frame is your dataframe            
wildcards = ','.join(['?'] * len(frame.columns))      
data = [tuple(x) for x in frame.values] 
table_name = 'Table' 

cur.executemany("INSERT INTO %s VALUES(%s)" % (table_name, wildcards), data) 
conn.commit() 
+0

感謝を助け

wildcards = ','.join(['%s'] * len(frame.columns)) 

希望それはラインが判明します。 write_csvを使用してコンピュータ上でテキストファイルを作成した後、os.systemを使用してBCPを呼び出すことも簡単な方法でした。 –

1

ちょうどこのいくつかの時間を使用しようとした他の誰かを保存します。

wildcards = ','.join(['?'] * len(frame.columns)) 

は次のようになります:

+0

これは、使用している特定のデータベースに依存します。 –

関連する問題