Beispiel #1
0
        public override void RunDirectCopy(IDatabaseSource source, DatabaseCopyOptions copyOpts)
        {
            MySqlStoredConnection sconn = MySqlSettings.CheckMySqlSource(source);
            MySqlSettings         cfg   = GlobalSettings.Pages.PageByName("mysql_client") as MySqlSettings;

            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = cfg.GetToolPath("mysqldump");
            StringBuilder pars = new StringBuilder();

            pars.AppendFormat("--user={0} ", sconn.Login);
            pars.AppendFormat("--password={0} ", sconn.Password);
            pars.AppendFormat("--host={0} ", sconn.DataSource);
            pars.AppendFormat("--port={0} ", sconn.Port);
            pars.Append("--routines ");
            if (IncludeDropStatement)
            {
                pars.Append("--add-drop-table ");
            }
            else
            {
                pars.Append("--skip-add-drop-table ");
            }

            pars.Append("--verbose ");
            pars.Append(source.DatabaseName ?? sconn.ExplicitDatabaseName);
            pars.Append(" ");

            if (copyOpts.CopyMembers.TableFilter != null)
            {
                pars.Append("--tables ");
                foreach (NameWithSchema table in copyOpts.CopyMembers.TableFilter)
                {
                    pars.Append(table.Name + " ");
                }
            }

            p.StartInfo.Arguments              = pars.ToString();
            p.StartInfo.UseShellExecute        = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError  = true;
            Logging.Debug("Running mysqldump " + pars.ToString());
            p.Start();
            Thread thr = new Thread(() => ReadFromErrStream(p));

            thr.Start();
            //Console.Write(p.StandardOutput.ReadToEnd());
            using (FileStream fw = new FileStream(GetWorkingFileName(), FileMode.Create))
            {
                IOTool.CopyStream(p.StandardOutput.BaseStream, fw);
            }
            p.WaitForExit();
            thr.Join();
            FinalizeFileName();
        }
Beispiel #2
0
        //bool m_useClientTools = true;

        //[XmlElem]
        //[Category("SQL")]
        //[DatAdmin.DisplayName("s_use_client_tools")]
        //[TypeConverter(typeof(YesNoTypeConverter))]
        //public bool UseClientTools
        //{
        //    get { return m_useClientTools; }
        //    set
        //    {
        //        if (!value && Registration.SoftwareEdition < SoftwareEdition.Professional)
        //        {
        //            Logging.Warning("Edition error: Postgre set use client tools");
        //            throw new BadEditionError(SoftwareEdition.Professional);
        //        }
        //        m_useClientTools = value;
        //    }
        //}

        public override void RunDirectCopy(IDatabaseSource source, DatabaseCopyOptions copyOpts)
        {
            var             sconn = PostgreSettings.CheckPostgreSource(source);
            PostgreSettings cfg   = GlobalSettings.Pages.PageByName("postgre_client") as PostgreSettings;

            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = cfg.GetToolPath("pg_dump");
            StringBuilder pars = new StringBuilder();

            pars.AppendFormat("-U {0} ", sconn.Login);
            pars.AppendFormat("--host={0} ", sconn.DataSource);
            p.StartInfo.EnvironmentVariables["PGPASSWORD"] = sconn.Password;
            if (sconn.Port > 0)
            {
                pars.AppendFormat("--port={0} ", sconn.Port);
            }
            if (IncludeDropStatement)
            {
                pars.Append("--clean ");
            }
            pars.Append("--verbose ");
            pars.AppendFormat("\"--file={0}\" ", GetWorkingFileName());

            pars.Append(source.DatabaseName ?? sconn.ExplicitDatabaseName);

            p.StartInfo.Arguments             = pars.ToString();
            p.StartInfo.UseShellExecute       = false;
            p.StartInfo.RedirectStandardError = true;
            Logging.Debug("Running pg_dump " + pars.ToString());
            p.Start();
            Thread thr = new Thread(() => ReadFromErrStream(p));

            thr.Start();
            p.WaitForExit();
            thr.Join();
            FinalizeFileName();
        }
Beispiel #3
0
 public override void RunDirectCopy(IDatabaseSource source, DatabaseCopyOptions copyOpts)
 {
     source.Connection.Invoke(() => DoRunDirectCopy(source));
 }