Pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 18 for SQL Server]

I'm trying to convert a DataFrame columns type and I'm receiving this error when I try to insert the data into SQL SERVER:

pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 22 (""): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision. (8023) (SQLExecDirectW)')

These are my code and database schema:

with pyodbc.connect(sql_server) as conn:
            cursor = conn.cursor()

            df_bcb = pd.DataFrame(newest_file)
            df_bcb['database'] = df_bcb['database'].astype(str, errors='ignore')
            df_bcb['codigoIdentificadorBacen'] = df_bcb['database'].astype(str, errors='ignore')
            df_bcb['codigoSisbacen'] = df_bcb['codigoSisbacen'].astype(int, errors='ignore')
            df_bcb['siglaISO3digitos'] = df_bcb['siglaISO3digitos'].astype(str, errors='ignore')
            df_bcb['nomeDoPais'] = df_bcb['nomeDoPais'].astype(str, errors='ignore')
            df_bcb['nomeDaUnidadeFederativa'] = df_bcb['nomeDaUnidadeFederativa'].astype(str, errors='ignore')
            df_bcb['codigoDoMunicipioNoIBGE'] = df_bcb['codigoDoMunicipioNoIBGE'].astype(int, errors='ignore')
            df_bcb['nomeDoMunicipio'] = df_bcb['nomeDoMunicipio'].astype(str, errors='ignore')
            df_bcb['nomeEntidadeInteresse'] = df_bcb['nomeEntidadeInteresse'].astype(str, errors='ignore')
            df_bcb['nomeEntidadeInteresseNaoFormatado'] = df_bcb['nomeEntidadeInteresseNaoFormatado'].astype(str, errors='ignore')
            df_bcb['codigoCNPJ14'] = df_bcb['codigoCNPJ14'].astype(str, errors='ignore')
            df_bcb['codigoCNPJ8'] = df_bcb['codigoCNPJ8'].astype(str, errors='ignore')
            df_bcb['codigoTipoSituacaoPessoaJuridica'] = df_bcb['codigoTipoSituacaoPessoaJuridica'].astype(int, errors='ignore')
            df_bcb['descricaoTipoSituacaoPessoaJuridica'] = df_bcb['descricaoTipoSituacaoPessoaJuridica'].astype(str, errors='ignore')
            df_bcb['codigoTipoEntidadeSupervisionada'] = df_bcb['codigoTipoEntidadeSupervisionada'].astype(int, errors='ignore')
            df_bcb['descricaoTipoEntidadeSupervisionada'] = df_bcb['descricaoTipoEntidadeSupervisionada'].astype(str, errors='ignore')
            df_bcb['codigoNaturezaJuridica'] = df_bcb['codigoNaturezaJuridica'].astype(int, errors='ignore')
            df_bcb['descricaoNaturezaJuridica'] = df_bcb['descricaoNaturezaJuridica'].astype(str, errors='ignore')
            df_bcb['codigoEsferaPublica'] = df_bcb['codigoEsferaPublica'].astype(int, errors='ignore')
            df_bcb['nomeReduzido'] = df_bcb['nomeReduzido'].astype(str, errors='ignore')
            df_bcb['siglaDaPessoaJuridica'] = df_bcb['siglaDaPessoaJuridica'].astype(str, errors='ignore')
            df_bcb['nomeFantasia'] = df_bcb['nomeFantasia'].astype(str, errors='ignore')
            df_bcb['indicadorEsferaPublica'] = df_bcb['indicadorEsferaPublica'].astype(int, errors='ignore')
            df_bcb['header_id'] = df_bcb['header_id'].astype(int, errors='ignore')
            print(df_bcb)
            df = df_bcb.values.tolist()
            
            for i in range(len(df)):
                insert = cursor.execute('''INSERT INTO [stg_bcb].[entidadesIF]  (
                    [database]
                    ,[stg_codigoIdentificadorBacen]
                    ,[stg_codigoSisbacen]
                    ,[stg_siglaISO3digitos]
                    ,[stg_nomeDoPais]
                    ,[stg_nomeDaUnidadeFederativa]
                    ,[stg_codigoDoMunicipioNoIBGE]
                    ,[stg_nomeDoMunicipio]
                    ,[stg_nomeEntidadeInteresse]
                    ,[stg_nomeEntidadeInteresseNaoFormatado]
                    ,[stg_codigoCNPJ14]
                    ,[stg_codigoCNPJ8]
                    ,[stg_codigoTipoSituacaoPessoaJuridica]
                    ,[stg_descricaoTipoSituacaoPessoaJuridica]
                    ,[stg_codigoTipoEntidadeSupervisionada]
                    ,[stg_descricaoTipoEntidadeSupervisionada]
                    ,[stg_codigoNaturezaJuridica]
                    ,[stg_descricaoNaturezaJuridica]
                    ,[stg_codigoEsferaPublica]
                    ,[stg_nomeReduzido]
                    ,[stg_siglaDaPessoaJuridica]
                    ,[stg_nomeFantasia]
                    ,[stg_indicadorEsferaPublica]
                    ,[header_id]
                    )    
                    VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
                    ''', df[i])
 CREATE TABLE [stg_bcb].[entidadesIF] (
    id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    [database] DATE,
    stg_codigoIdentificadorBacen TEXT,
    stg_codigoSisbacen INT,
    stg_siglaISO3digitos TEXT,
    stg_nomeDoPais TEXT,
    stg_nomeDaUnidadeFederativa TEXT,
    stg_codigoDoMunicipioNoIBGE INT,
    stg_nomeDoMunicipio TEXT,
    stg_nomeEntidadeInteresse TEXT,
    stg_nomeEntidadeInteresseNaoFormatado TEXT,
    stg_codigoCNPJ14 NCHAR(18),
    stg_codigoCNPJ8 NCHAR(18),
    stg_codigoTipoSituacaoPessoaJuridica INT,
    stg_descricaoTipoSituacaoPessoaJuridica TEXT,
    stg_codigoTipoEntidadeSupervisionada INT,
    stg_descricaoTipoEntidadeSupervisionada TEXT,
    stg_codigoNaturezaJuridica INT,
    stg_descricaoNaturezaJuridica TEXT,
    stg_codigoEsferaPublica INT,
    stg_nomeReduzido TEXT,
    stg_siglaDaPessoaJuridica TEXT,
    stg_nomeFantasia TEXT,
    stg_indicadorEsferaPublica INT,
    header_id INT,
    FOREIGN KEY (header_id) REFERENCES [stg_bcb].[entidadesIF_header](id)
 )

I have already tried to use the pd.to_numeric function, but it doesn't work

Back to Top