天天看點

C#.NET通用權限管理在DB2資料庫上運作的腳本參考 - 通過程式将資料導入到目标資料庫中

參考代碼如下:

//--------------------------------------------------------------------

// All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 

using System.Data;

namespace DotNet.Example

{

    using DotNet.BaseManager;

    using DotNet.DbUtilities;

    public class ImportExportData

    {

        /// <summary>

        /// 導出資料庫到Oralce

        /// </summary>

        public void Export()

        {

            this.ExportTable("Items_Nationality");

            this.ExportTable("Items_Area");

            this.ExportTable("Items_AuditStatus");

            this.ExportTable("Items_Degree");

            this.ExportTable("Items_Duty");

            this.ExportTable("Items_Education");

            this.ExportTable("Items_Express");

            this.ExportTable("Items_Links");

            this.ExportTable("Items_MembershipLevels");

            this.ExportTable("Items_NewsCategory");

            this.ExportTable("Items_OnSale");

            this.ExportTable("Items_OrganizeCategory");

            this.ExportTable("Items_Party");

            this.ExportTable("Items_Pattern");

            this.ExportTable("Items_PayCategory");

            this.ExportTable("Items_PostCategory");

            this.ExportTable("Items_RoleCategory");

            this.ExportTable("Items_SalaryItemCategory");

            this.ExportTable("Items_SendCategory");

            this.ExportTable("Items_Gender");

            this.ExportTable("Items_Title");

            this.ExportTable("Items_Units");

            this.ExportTable("Items_Wed");

            this.ExportTable("Items_WorkCategory");

            this.ExportTable("Items_WorkFlowCategories");

            this.ExportTable("Items_WorkingProperty");

            this.ExportTable("Base_Businesscard");

            this.ExportTable("Base_Comment");

            this.ExportTable("Base_Contact");

            this.ExportTable("Base_ContactDetails");

            this.ExportTable("Base_Exception");

            this.ExportTable("Base_File");

            this.ExportTable("Base_Folder");

            this.ExportTable("Base_Items");

            this.ExportTable("Base_Log");

            this.ExportTable("Base_Message");

            this.ExportTable("Base_News");

            this.ExportTable("Base_Organize");

            this.ExportTable("Base_Module", " SELECT * FROM BASE_MODULE ORDER BY PARENTID, ID ");

            this.ExportTable("Base_PermissionItem");

            this.ExportTable("Base_Role");

            this.ExportTable("Base_Staff");

            this.ExportTable("Base_Parameter");

            this.ExportTable("Base_Project");

            this.ExportTable("Base_Permission");

            this.ExportTable("Base_PermissionScope");

            this.ExportTable("Base_Sequence");

            this.ExportTable("Base_StaffOrganize");

            this.ExportTable("Base_TableColumns");

            this.ExportTable("Base_User");

            this.ExportTable("Base_UserAddress");

            this.ExportTable("Base_UserOrganize");

            this.ExportTable("Base_UserRole");

            /*

            this.ExportTable("Base_WorkFlowActivity");

            this.ExportTable("Base_WorkFlowCurrent");

            this.ExportTable("Base_WorkFlowHistory");

            this.ExportTable("Base_WorkFlowProcess");

            */

            System.Console.ReadLine();

        }

        public void ExportTable(string tableName)

            ExportTable(tableName.ToUpper(), tableName.ToUpper());

        /// 導出一個表

        /// <param name="tableName">表名</param>

        /// <param name="table">裡面的資料</param>

        public void ExportTable(string tableName, string table)

            // 這裡是擷取目标資料表的方法

            IDbHelper sourceDB = new SqlHelper("Data Source=192.168.0.121;Initial Catalog=UserCenterV36;User Id = sa ; Password = xx;");

            sourceDB.Open();

            DataTable dataTable = new DataTable(tableName);

            if (tableName.Equals(table))

            {

                dataTable = sourceDB.Fill("SELECT * FROM " + table);

            }

            else

                dataTable = sourceDB.Fill(table);

            sourceDB.Close();

            // 這裡是目标表的資料插入處理

            // IDbHelper targetDB = new OracleHelper("Data Source=KANGFU;user=usercenter;password=xx;");

            IDbHelper targetDB = new DB2Helper("Database=UCV36;UserID=JIRIGALA;Password=xx;Server=JIRIGALA-PC;");

            targetDB.Open();

            targetDB.BeginTransaction();

            SQLBuilder sqlBuilder = new SQLBuilder(targetDB);

            try

                // 清除表資料

                // targetDB.ExecuteNonQuery(" TRUNCATE TABLE " + tableName);

                targetDB.ExecuteNonQuery(" DELETE FROM " + tableName);

                // 建立配套的序列

                // targetDB.ExecuteNonQuery("create sequence SEQ_" + tableName.ToUpper() + " as bigint start with 1000000 increment by 1 minvalue 10000 maxvalue 99999999999999999 cycle cache 20 order");

                // targetDB.ExecuteNonQuery("create sequence SEQ_" + tableName + " minvalue 1 maxvalue 999999999999999999999999 start with 1 increment by 1 cache 20");

                int r = 0;

                for (r = 0; r < dataTable.Rows.Count; r++)

                {

                    sqlBuilder.BeginInsert(tableName);

                    for (int i = 0; i < dataTable.Columns.Count; i++)

                    {

                        sqlBuilder.SetValue(dataTable.Columns[i].ColumnName, dataTable.Rows[r][dataTable.Columns[i].ColumnName]);

                    }

                    sqlBuilder.EndInsert();

                    // System.Console.WriteLine("表 " + tableName + " 已插入第 " + r.ToString() + " 行");

                }

                System.Console.WriteLine(" - - 表 " + tableName + " 共插入 " + r.ToString() + " 行");

                targetDB.CommitTransaction();

            catch (System.Exception exception)

                // targetDB.RollbackTransaction();

                System.Console.WriteLine(tableName + " -- " + exception.Message);

            finally

                targetDB.Close();

    }

}本文轉自jirigala_bao 51CTO部落格,原文連結:http://blog.51cto.com/jirigala/812629