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
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
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)