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(); }
//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(); }
public override void RunDirectCopy(IDatabaseSource source, DatabaseCopyOptions copyOpts) { source.Connection.Invoke(() => DoRunDirectCopy(source)); }