/// <summary> /// Disable indexes on table to avoid time consuming indexing work when inserting data /// </summary> /// <param name="dfi">The data file info object.</param> private void DisableIndexesOnTable(DataFileInfo dfi) { if (!indexesDiabledList.Contains(dfi, new DataFileInfoComparer())) { SqlServerHelper.DisableAllIndexesOnTable(dfi.TargetDatabase, dfi.Table); indexesDiabledList.Add(dfi); } }
/// <summary> /// Imports the specified CMD. /// </summary> /// <param name="cmd">The CMD.</param> /// <param name="dfi">The dfi.</param> /// <returns><see cref="CmdHelper"/>'s Last Exit code</returns> public int Import(CmdHelper cmd, DataFileInfo dfi) { ////Process.Start("bcp.exe", GetCommand(tableFullName)); cmd.ExecuteCommand( "{0} ".FormatWith(Settings.Default.DataImporter_BCP_Path) + GetCommand(dfi), Properties.Settings.Default.CommandsUserName, Properties.Settings.Default.CommandsPassword, Properties.Settings.Default.CommandsDomain ); return(cmd.LastExitCode); }
/// <summary> /// Clears the existing data on table. /// </summary> /// <param name="dfi">The data file information object.</param> private void ClearExistingDataOnTable(DataFileInfo dfi) { if (!dataClearedList.Contains(dfi, new DataFileInfoComparer())) { string cmdText = "DELETE FROM {0}.{1}.{2}".FormatWith(dfi.TargetDatabase, dfi.Owner, dfi.Table); // The following may throw this exception: // Cannot truncate table 'Lists_0_1.dbo.list_item_data' because it is published for replication or enabled for Change Data Capture. ////string cmdText = "TRUNCATE TABLE {0}.{1}.{2}".Format2(dfi.TargetDatabase, dfi.Owner, dfi.Table); Log.Info("Clearing old data by this command: '{0}'...".FormatWith(cmdText)); SqlServerHelper.Execute(cmdText); dataClearedList.Add(dfi); } }
/// <summary> /// Gets the full name of the target table. /// </summary> private void GetTargetTableFullName() { try { CopyDataFiles(Settings.Default.BedTransferFolder, Settings.Default.DataImporter_DataDirectory); DecompressDataFiles(); } catch (Exception ex) { ExceptionHelper.CentralProcess(ex); } targetDataFileInfoList = new List <DataFileInfo>(); targetDatabases = new List <string>(); DirectoryInfo di = new DirectoryInfo(Settings.Default.DataImporter_DataDirectory); Log.Info("Read data files under '{0}'...".FormatWith(Settings.Default.DataImporter_DataDirectory)); if (di.Exists) { foreach (FileInfo fi in di.GetFiles("*.txt", SearchOption.TopDirectoryOnly)) { DataFileInfo dfi = new DataFileInfo(fi.Name); if (dfi.IsValid()) { targetDataFileInfoList.Add(dfi); if (!targetDatabases.Contains(dfi.TargetServer + "\\" + dfi.TargetDatabase)) { targetDatabases.Add(dfi.TargetServer + "\\" + dfi.TargetDatabase); Log.Info("Adding targetDatabase: {0}".FormatWith(targetDatabases[targetDatabases.Count - 1])); } } } Log.Info("Found {0} datafile(s) under the directory '{1}".FormatWith(targetDataFileInfoList.Count, di.FullName)); } else { Log.Error("The specified path '{0}' does not exist.".FormatWith(Settings.Default.DataImporter_DataDirectory)); } }
/// <summary> /// Gets the command. /// </summary> /// <param name="dfi">The dfi.</param> /// <returns></returns> private string GetCommand(DataFileInfo dfi) { return(bcpImportCommandFormat.FormatWith(dfi.TargetTableFullName, dfi.DataFileFullPath, dfi.TargetServer)); }