Задача передо мной стоит такая - нужно из БД transbase (БД написаная только под винду) перегнать в Мускуль. БД большая (список всех больниц и лечебных пунктов во всем мире) - таблицы в несколько десятков гигабайт.
from com.ziclix.python.sql import zxJDBC from settings import * from org.python.core import codecs codecs.setDefaultEncoding('utf-8') tableName = "TB_IMAGES" mysqlTable = "TB_IMAGES" try: connTD = zxJDBC.connect(dbUrl, dbUser, dbPassword, dbDriver) cursorTD = connTD.cursor(True) #connect to MySQL mysqlConn = zxJDBC.connect(url, user, password, driver, autoReconnect="true") cursorMySQL = mysqlConn.cursor(True) cursorTD.execute("SELECT * FROM %s" % tableName) cursorMySQL.execute("DROP TABLE IF EXISTS %s" % mysqlTable) cursorMySQL.execute("CREATE TABLE IF NOT EXISTS %s (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `IMAGENAME` text , `IMAGEDATA` blob)" %(mysqlTable)) mysqlConn.commit() for result in cursorTD.fetchall(): if result[1] == None: result = list( result ) result[1] = "Null" result = tuple( result ) #print "INSERT INTO %s ( `ID`,`TYPEID`, `COUNTRYID`, `LTFINISHED`) VALUES ( %s, %s, %s )" % (mysqlTable, result[0], result[1], result[2]) cursorMySQL.execute("INSERT INTO %s ( `IMAGENAME`, `IMAGEDATA`) VALUES ( '%s', %s)" % (mysqlTable, result[0], result[1])) mysqlConn.commit() #mysqlConn.commit() except Exception, e: print e
Так вот у меня в цикле mysqlConn.commit() от чего оно жутко тормозит. Когда вывожу из цикла, то появляется ошибка. Может есть другой путь? Менее затратный к аппаратным ресурсам? Спасибо.