Exemple #1
0
def run_import_file(
    server,
    database,
    user,
    password,
    trusted_connection,
    codepage,
    schema,
    table,
    file_path,
    delimiter,
):

    try:
        # Import data
        bcp_in = ["bcp"]
        bcp_in.append("[" + database + "].[" + schema + "].[" + table + "]")
        bcp_in.append("in")
        bcp_in.append(file_path)
        bcp_in.append("-t" + delimiter)
        bcp_in.append("-c")
        bcp_in.append("-C" + codepage)
        bcp_in.append("-b100000")
        bcp_in.append("-S" + server)
        if trusted_connection:
            bcp_in.append("-T")
        else:
            bcp_in.append("-U" + user)
            bcp_in.append("-P" + password)

        logger.debug(bcp_in)
        cmd_code, cmd_message = utils.run_cmd(bcp_in)
        return_code = "ERROR"
        row_count = 0

        if cmd_code == 0:
            try:
                errors = cmd_message.count("Error")
                if errors > 0:
                    logger.error("Importing in " + schema + "." + table +
                                 " completed with errors")
                return_message = cmd_message.splitlines()
                try:
                    row_count = int(return_message[-3].split()[0])
                    return_code = "RUN"
                except:
                    if return_message[2].split()[0] == "SQLState":
                        logger.debug(cmd_message)
                        return_code = "WARN"
            except:
                logger.warning(table + ": " +
                               "Failed to parse sucessfull import cmd")
        else:
            logger.error("Error importing " + schema + "." + table)
            logger.debug(cmd_message)
    except:
        logger.error("Failed importing table")
    return return_code, row_count
Exemple #2
0
def run_export_cmd(cmd_commands):
    envs = [['NLS_LANG', 'SWEDISH_SWEDEN.AL32UTF8']]
    logger.debug(cmd_commands)
    cmd_code, cmd_message = utils.run_cmd(cmd_commands, envs)
    if cmd_code == 0:
        logger.debug(cmd_commands[2] + " exported")
        return 0
    else:
        logger.error(
            "Error exportng " + cmd_commands[2] + " : cmd_code: " + str(cmd_code) + " cmd_message: " + cmd_message)
        return 0
Exemple #3
0
def run_export_query(
    server,
    user,
    password,
    trusted_connection,
    source_db_name,
    query,
    file_path,
    delimiter,
    codepage='65001',
):
    # Export data
    # Generate bcp command
    bcp_out = ['bcp']
    bcp_out.append(query)
    bcp_out.append('queryout')
    bcp_out.append(file_path)
    bcp_out.append('-t' + delimiter)
    bcp_out.append('-c')
    bcp_out.append('-C' + codepage)
    bcp_out.append('-S' + server)
    if source_db_name != "":
        bcp_out.append('-d' + source_db_name)

    if trusted_connection:
        bcp_out.append('-T')
    else:
        bcp_out.append('-U' + user)
        bcp_out.append('-P' + password)

    logger.debug(bcp_out)

    cmd_code, cmd_message = utils.run_cmd(bcp_out)
    if cmd_code == 0:
        try:
            return_message = cmd_message.splitlines()
            row_count = int(return_message[-3].split()[0])
            timing = str(return_message[-1].split()[5])
            if row_count > 0:
                average = str(return_message[-1].split()[8][1:-3])
            else:
                average = '0'
            logger.debug(query + ": " + str(row_count) +
                         " rows exported, in " + timing +
                         " ms. at an average of " + average + " rows per sec")
            return row_count
        except:
            logger.warning(query + ": " +
                           "Failed to parse sucessfull export cmd for")
        logger.debug(query + " exported")
    else:
        logger.error("Error exportng " + query + " :" + cmd_message)