使用python和cx_oracle读写Clob数据

时间:2018-03-14 22:35:46

标签: python json oracle clob cx-oracle

我试图从测试数据库读取Clob数据并将其插入dev db。能够做到这一点,但表现非常差。 对于100K行,它需要8到12个小时,并从我的本地机器运行它。 我想知道我的方法是否正确或是否有更好的方法。 以下是连接后的代码:

for row in rows.fetchall()
   x = []
   data = row.read
   json_data = json.loads(data)
   x.append(json_data)

这就是我这样做的方式。只是想知道是否有更好的方法来做到这一点。 Stack:Python,OracleDB,cx_oracle,json 感谢

1 个答案:

答案 0 :(得分:0)

从cx_Oracle sample开始,您将使用以下代码。这应该会大大提高性能!

def OutputTypeHandler(cursor, name, defaultType, size, precision, scale):
    if defaultType == cx_Oracle.CLOB:
        return cursor.var(cx_Oracle.LONG_STRING, arraysize = cursor.arraysize)
    elif defaultType == cx_Oracle.BLOB:
        return cursor.var(cx_Oracle.LONG_BINARY, arraysize = cursor.arraysize)

conn = cx_Oracle.Connection("user/pw@dsn")
conn.outputtypehandler = OutputTypeHandler
cursor = conn.cursor()
cursor.execute("""
        select CLOBColumn
        from SomeTable""")
json_data = [json.loads(s) for s, in cursor]