Пример #1
0
 /// <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);
     }
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
        /// <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));
            }
        }
Пример #5
0
 /// <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));
 }