rictom / cnpj-mysql

Script em python para carregar os arquivos de cnpj dos dados públicos da Receita Federal em MYSQL e em POSTGRES.
MIT License
55 stars 27 forks source link

Problema, erro de memória #6

Open fredroo opened 1 year ago

fredroo commented 1 year ago

está apresentando erro @rictom eu tenho 32gb de memória, mas não importa da erro, o projeto ainda funciona?

rictom commented 1 year ago

OI @fredroo,

Sim, o projeto funciona. Vc precisa ser mais específico, colando a saída do console.

fredroo commented 1 year ago

na quinta quando foi que publiquei essa issue, estava dando erro de memória, tipo como se tivesse faltando, já hoje importou quase tudo, na hora dos finalmentes deu esse erro, olha só @rictom

ALTER TABLE empresas ADD COLUMN capital_social DECIMAL(18,2)
fim parcial... Sat Oct 28 14:03:15 2023
--------------------
executando parte 1:

UPDATE  empresas
set capital_social = cast(REPLACE(capital_social_str,',', '.') AS DECIMAL(18,2))
Traceback (most recent call last):
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 779, in _read_bytes
    data = self._rfile.read(num_bytes)
  File "C:\Python310\lib\socket.py", line 705, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly close
d by the remote host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\cur
sors.py", line 153, in execute
    result = self._query(query)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\cur
sors.py", line 322, in _query
    conn.query(q)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 558, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 822, in _read_query_result
    result.read()
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 1200, in read
    first_packet = self.connection._read_packet()
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 739, in _read_packet
    packet_header = self._read_bytes(4)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 785, in _read_bytes
    raise err.OperationalError(
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during que
ry ([WinError 10054] An existing connection was forcibly closed by the remote ho
st)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\xampp\htdocs\cnpj-mysql\dados_cnpj_mysql.py", line 366, in <module>
    engine.execute(sql)
  File "<string>", line 2, in execute
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
util\deprecations.py", line 468, in warned
    return fn(*args, **kwargs)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 3257, in execute
    return connection.execute(statement, *multiparams, **params)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 1365, in execute
    return self._exec_driver_sql(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 1669, in _exec_driver_sql
    ret = self._execute_context(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
util\compat.py", line 211, in raise_
    raise exception
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\
engine\default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\cur
sors.py", line 153, in execute
    result = self._query(query)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\cur
sors.py", line 322, in _query
    conn.query(q)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 558, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 822, in _read_query_result
    result.read()
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 1200, in read
    first_packet = self.connection._read_packet()
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 739, in _read_packet
    packet_header = self._read_bytes(4)
  File "C:\Users\Fred\AppData\Roaming\Python\Python310\site-packages\pymysql\con
nections.py", line 785, in _read_bytes
    raise err.OperationalError(
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost con
nection to MySQL server during query ([WinError 10054] An existing connection wa
s forcibly closed by the remote host)')
[SQL:
UPDATE  empresas
set capital_social = cast(REPLACE(capital_social_str,',', '.') AS DECIMAL(18,2))
]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
rictom commented 1 year ago

Acho que é meio difícil de saber a causa. O servidor mysql é remoto? O servidor é local (vc está rodando algo como o XAMPP?). Neste caso, está em um disco Externo? Vc colocou o computador para não hibernar?

fredroo commented 1 year ago

@rictom o mysql é local, 5.7, não está rodando naquele que você instala só o mysql, pois no xampp tava dando erro de memória, mas nesse também deu, hoje fui rodar para pegar o erro de console, não é disco local também, meu computador não hiberna

fredroo commented 1 year ago

@rictom qual versão do python 3.8 que você testou e qual do mysql?

fredroo commented 1 year ago

estou rodando agora em cmd, tentei no git bash várias vezes e me parece que tem haver

rictom commented 1 year ago

Eu tinha apagado o xampp que estava usando. Eu baixei para testar. O padrão de criação de tabela é Inodb, e daí deu um erro na rotina. Eu sugiro vc alterar a configuração para usar MyIsam, que exige menos processamento.

fredroo commented 1 year ago

@rictom mas chegou a rodar 100% pois comigo está parando no update empresas set capital_social

fredroo commented 1 year ago

@rictom não tem como você atualizar esse projeto, ele é muito top

rictom commented 1 year ago

Vc não conseguiu rodar até o final? Eu acho que vc tem que aumentar o timeout do seu servidor. Vc precisa realmente mexer com a base em mysql? Eu tenho o projeto para gerar em sqlite https://github.com/rictom/cnpj-sqlite Vc pode gerar em sqlite e depois carregar em mysql usando o DBeaver, que parece ser possível, mas nunca tentei. Em mysql eu só usei para testar o script, mas acho estranho não funcionar. Creio que deve ser algum detalhe na configuração do mysql na sua máquina.

fredroo commented 1 year ago

@rictom vou tentar com sqlite e depois exportar para importar em mysql, as vezes nem vou precisar do mysql, é mais para consulta

fredroo commented 1 year ago

@rictom rodei o projeto sqlite e funcionou perfeitamente

fredroo commented 1 year ago

@rictom problema é para importar, exportei em sql, só que já faz 3 dias que está rodando o import, nem sei mais se está funcionando, a base não mudou nada, será que você quando tiver um tempo não consegue corrigir e atualizar esse projeto aqui de mysql, se for possível joga para mariaDB compatível. agradeço desde já