static void Main(string[] args) { string diretorio = $@"{Directory.GetCurrentDirectory()}\Importar\"; List <IMDB> dados = IMDB.importarArquivo(diretorio, 100000); //99000 List <string> cenariosPossiveis = new List <string>(); string cenarioUnico = ""; //seleciona o tipo de instalação Console.WriteLine("Informe a instalação a ser operada:"); Console.WriteLine("1 -> PosgreSQL"); Console.WriteLine("2 -> Posgresql-DBR - 1 nó"); Console.WriteLine("3 -> Posgresql-DBR - 2 nó"); Console.WriteLine("4 -> Posgresql-DBR - 2 nó - sendo 1 com defeito permanente"); Console.WriteLine("5 -> Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente"); string opcao1 = Console.ReadLine(); switch (opcao1) { case "1": cenarioUnico = "PosgreSQL"; break; case "2": cenarioUnico = "Posgresql-DBR - 1 nó"; break; case "3": cenarioUnico = "Posgresql-DBR - 2 nó"; break; case "4": cenarioUnico = "Posgresql-DBR - 2 nó - sendo 1 com defeito permanente"; break; case "5": cenarioUnico = "Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente"; break; } cenariosPossiveis.Add(cenarioUnico); //cenariosPossiveis.Add("PosgreSQL"); //cenariosPossiveis.Add("Posgresql-DBR - 1 nó"); //cenariosPossiveis.Add("Posgresql-DBR - 2 nó"); //cenariosPossiveis.Add("Posgresql-DBR - 2 nó - sendo 1 com defeito permanente"); //cenariosPossiveis.Add("Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente"); foreach (var cenario in cenariosPossiveis) { realizaTestes(dados, cenario); } }
public static List <IMDB> importarArquivo(string diretorio, int limite = 999999999) { List <IMDB> dados = new List <IMDB>(); var arquivos = ListarArquivos(diretorio); //contagem a quantidade de arquivos e linhas totais a importar int quantArquivos = arquivos.Count; int quantLinhasTotal = 0; Console.WriteLine($"Total de {quantArquivos} arquivos a serem importados"); for (int i = 0; i < arquivos.Count; i++) { var nomeArquivo = arquivos[i]; string caminhoArquivo = $"{diretorio}{nomeArquivo}"; //TextReader arquivo = new StreamReader(caminhoArquivo, true);//Inicializa o Leitor Console.Write($"Contando linhas do arquivo {i}"); int quantLinhas = contarQuantLinhasDeArquivo(caminhoArquivo, i); Console.WriteLine($" ====> {quantLinhas} "); quantLinhasTotal += quantLinhas; } int contadorLinhas = 0; //varre todas as linhas dos arquivos for (int i = 0; i < arquivos.Count; i++) { var nomeArquivo = arquivos[i]; string caminhoArquivo = $"{diretorio}{nomeArquivo}"; TextReader arquivo = new StreamReader(caminhoArquivo, true); //Inicializa o Leitor while (arquivo.Peek() != -1) //Enquanto o arquivo não acabar, o Peek não retorna -1 sendo adequando para o loop while... { //limita a quantidade de linhas a serem importadas. if (contadorLinhas >= limite) { return(dados); } //linha do arquivo string linha = arquivo.ReadLine(); if (linha.Contains("tconst") == true || linha.Contains("nconst") == true) // se for um cabeçalho, ignorar { goto ignorarLinha; } //tenta realizar a conversão para classe try { var itens = linha.Split(" "); //quebra a linha em um array de strings string nconst = (itens[0] == @"\N") ? null : itens[0]; string primaryName = (itens[1] == @"\N") ? null : itens[1]; int birthYear = (itens[2] == @"\N") ? 0 : Int32.Parse(itens[2]); int deathYear = (itens[3] == @"\N") ? 0 : Int32.Parse(itens[3]); string primaryProfession = (itens[4] == @"\N") ? null : itens[4]; string knownForTitles = (itens[5] == @"\N") ? null : itens[5]; IMDB obj = new IMDB { nconst = nconst, primaryName = primaryName, birthYear = birthYear, deathYear = deathYear, primaryProfession = primaryProfession, knownForTitles = knownForTitles }; dados.Add(obj); contadorLinhas++; //Console.WriteLine(""); } catch (Exception erro) { goto ignorarLinha; } ignorarLinha: Console.Write(""); } GC.Collect(); } return(dados); }