Ejemplo n.º 1
0
        static void Export(string[] args)
        {
            var take = int.MaxValue;
            var skip = 0;

            if (Array.IndexOf(args, "--take") > 0)
            {
                take = int.Parse(args[Array.IndexOf(args, "--take") + 1]);
            }
            if (Array.IndexOf(args, "--skip") > 0)
            {
                skip = int.Parse(args[Array.IndexOf(args, "--skip") + 1]);
            }

            var sourceFileName = args[Array.IndexOf(args, "--source-file") + 1];
            var targetFileName = args[Array.IndexOf(args, "--target-file") + 1];

            var dir     = Path.GetDirectoryName(sourceFileName);
            var version = Path.GetFileNameWithoutExtension(sourceFileName);
            var ix      = IxInfo.Load(Path.Combine(dir, version + ".ix"));

            Console.WriteLine("migrating...");

            var writeTimer = new Stopwatch();

            writeTimer.Start();

            using (var outStream = new FileStream(targetFileName, FileMode.Create))
                using (var jsonWriter = new StreamWriter(outStream, Encoding.UTF8))
                    using (var documents = new RDocStream(sourceFileName, ix.PrimaryKeyFieldName, skip, take))
                    {
                        jsonWriter.WriteLine("[");

                        foreach (var document in documents.ReadSource())
                        {
                            var dic  = document.Fields.ToDictionary(x => x.Key, y => y.Value.Value);
                            var json = JsonConvert.SerializeObject(dic, Formatting.None);
                            jsonWriter.WriteLine(json);
                        }

                        jsonWriter.Write("]");
                    }

            Console.WriteLine("write operation took {0}", writeTimer.Elapsed);
        }