All pastes #424371 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-04-04 19:09 UTC
rendered paste body
#-*- coding: latin1 -*-
from sys import exit
from string import join

class DataLoad(object):

  PlanilhaPath = 'dump_inicial.csv'
  CategoriasPath = 'categorias.csv'
  TemplatePath = 'template.sql'
  DumpPath = 'dump.sql'
  TableLocacao = ('fk_categoria','proprietario','responsavel','nascimento','cpf','rg','profissao','locacao','endereco','bairro','cidade','estado','cep','ddd','telefone','ddd_celular','celular','ddd_comercial','telefone_c','ddd','fax','email','observacoes','valores','som','animais','pesquisa','posicao','fotografo','fotos_data','banco_nome','banco_cpf','banco_banco', 'banco_agencia', 'banco_conta')
  DbName = 'primeiraproducao_com_br_-_site'
  #C:\Arquivos de programas\eclipse\workspace\data_load
  def __init__(self):
    print 'Processando...'
    self.DictCategorias = {}
    
    Data = {}
    Data['DbName'] = self.DbName
    print 'Dicionario Estrutural carregado.'

    Data['Categorias'] = self.Load('categorias', self.CategoriasPath)
    print 'Categorias carregadas.'

    Data['Dados'] = self.Load('planilha', self.PlanilhaPath)
    print 'Planilha Carregada.'
    
    try:
      File = open(self.TemplatePath)
      Template = File.read()
      File.close()
    except:
      raise
      print '<ERRO> Ocorreu um erro no carregamento do arquivo TEMPLATE.'
      exit(1)
    else:
      print 'Template carregado.'
      Template = Template % Data
      try:
        File = open(self.DumpPath, 'wb')
        File.write(Template)
        File.close()
      except:
        print '<ERRO> Ocorreu um erro na gravação do arquivo DUMP.'
      else:
        print 'Arquivo SQL gravado.'

  def __del__(self):
    print 'Ok.'
    
  def Load(self, who, CsvPath):
    try:
      File = open(CsvPath)
      CsvFile = File.readlines()
      File.close()
    except:
      print '<ERRO> Ocorreu um erro no carregamento do arquivo CSV.'
    else:
      if who == 'planilha':
        return self.LoadPlanilha(CsvFile)
      elif who == 'categorias':
        return self.LoadCategorias(CsvFile)

  def LoadPlanilha(self, CsvFile):
    del CsvFile[0] #deleta rotulos
    List = []
    for Line in CsvFile:
      Dados = ()
      Campos = Line.split('|')
      Campos[0] = self.DictCategorias[Campos[0].upper().strip(' ')] #troca da categoria por índice
      Campos[13] = Campos[13]+Campos[14] #DDD + telefone
      Campos[15] = Campos[15]+Campos[16] #DDD_celular + celular
      Campos[17] = Campos[17]+Campos[18] #DDD_comercial + telefone_comercial
      Campos[19] = Campos[19]+Campos[20] #DDD_fax + fax
      del Campos[14], Campos[16], Campos[18], Campos[20]
      for Item in Campos:
        if isinstance(Item, str):
          Temp = Item.replace('\n','').strip(' ')
        else:
          Temp = Item
        Dados = Dados.__add__((Temp,))
      List.append(str(Dados))
    return join(List, ',\n')

  def LoadCategorias(self, CsvFile):
    List = []
    Index = 0
    for WordLine in CsvFile:
      WordLine = WordLine.replace('\n','').strip(' ')
      if not self.DictCategorias.has_key(WordLine):
        Index += 1
        self.DictCategorias[WordLine.upper()] = Index
      List.append("('%s')" % WordLine)
    return join(List, ',\n')

if __name__ == '__main__':
  load = DataLoad()