2017-01-10 4 views
1

Ich habe eine DataFrame, die aus einer Spalte von Strings besteht. Wenn ich df.to_sql() tue, um es als eine Tabelle in einer Oracle-Datenbank zu speichern, ist die Spalte CLOB-Typ und ich muss es konvertieren. Ich frage mich, ob ich den Typ (zB varchar2) angeben kann, wenn ich die Tabelle erstelle?Wie man df.to_sql() erstellt varchar2 object

Antwort

2

können Sie SQLAlchemy Typ explizit angeben:

import cx_Oracle 
from sqlalchemy import types, create_engine 
engine = create_engine('oracle://user:[email protected]_or_scan_address:1521/ORACLE_SERVICE_NAME') 

df.to_sql('table_name', engine, if_exists='replace', 
      dtype={'str_column': types.VARCHAR(df.str_column.str.len().max())}) 

df.str_column.str.len().max() - wird die maximale Stringlänge

Hinweis berechnen: types.VARCHAR wird VARCHAR2 für Oracle zugeordnet werden (siehe working example here)

1

Sie haben Bei den Optionen besteht die erste darin, die Tabelle manuell zu erstellen und dann den Parameter if_exists zu verwenden, um Pandas anzuweisen, sie an die Tabelle anzuhängen, anstatt sie zu löschen und neu erstellen

Option zwei ist die Verwendung des dtype übergeben ein Wörterbuch der Spaltennamen, so dass die Tabelle entsprechend erstellt werden kann. Dies sind SQL Alchemy-Typen, so dass Sie sollten

from sqlalchemy.dialects.oracle import VARCHAR2 

und passieren im Wörterbuch als

{'mycolumn': VARCHAR2(256) } 

oder geeignete Länge.

Ref: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html

Verwandte Themen