mongodb數據庫轉存sqlite

最近公司項目中有需要,所以就寫了,不多說了,先上代碼

程序代碼中引用的有其他人寫的數據庫執行和表創建函數,這裏事先說明下(其實我就是整理了一下)

using System;
using System.Data.SQLite;
using MongoDB.Driver;
using MongoDB.Bson;

namespace Test
{
    class MongoMethod
    {
        MongoClient mongoClient;
        MongoServer mongoServer;
        MongoDatabase mongoDatabase;
        /// <summary>
        /// 取出的數據緩存
        /// </summary>
        BsonDocument[] dataStrBuffers = new BsonDocument[3];
        //存儲發送數據的字符串
        string sendData;

        private SQLiteConnection connection;
        SQLiteCommand m_DbCommand;
        SQLiteDataReader m_Reader;

        private string fileName = "(path,sqlite數據庫文件所在路徑)";

        static void Main(string[] args)
        {
            MongoMethod mongo = new MongoMethod();
            mongo.ConnectSqlite();
            mongo.GetData();
            Console.ReadKey(); 
        }

        private void ConnectSqlite()
        {
            connection = new SQLiteConnection(@"Data Source=" + fileName);
            connection.Open();
        }

        /// <summary>
        /// 執行數據庫語句(返回數據集)
        /// </summary>
        /// <param name="sqlQuery">數據庫語句</param>
        /// <returns>執行結果返回的數據集</returns>
        public SQLiteDataReader ExecuteQuery(string sqlQuery)
        {
            if (connection == null)
            {
                Console.WriteLine("SQLite connection is null, Please OpenDB first");

                return null;
            }

            m_DbCommand = connection.CreateCommand();
            m_DbCommand.CommandText = sqlQuery;
            m_Reader = m_DbCommand.ExecuteReader();

            return m_Reader;
        }

        /// <summary>
        /// 執行數據庫語句(不返回結果集)
        /// </summary>
        /// <param name="sqlQuery">數據庫語句</param>
        public void ExecuteNonQuery(string sqlQuery)
        {
            if (connection == null)
            {
                Console.WriteLine("SQLite connection is null, Please OpenDB first");

                return;
            }

            m_DbCommand = connection.CreateCommand();
            m_DbCommand.CommandText = sqlQuery;
            m_DbCommand.ExecuteNonQuery();
        }

        /// <summary>
        /// 創建數據庫新表
        /// </summary>
        /// <param name="tableName">數據庫表名</param>
        /// <param name="cols">目標列名集合</param>
        /// <param name="colTypes">目標類型名集合</param>
        /// <returns>執行結果數據集讀取器</returns>
        public SQLiteDataReader CreateTable(string tableName, string[] cols, string[] colTypes)
        {
            if (cols.Length != colTypes.Length)
            {
                Console.WriteLine("columns.Length != colType.Length");
            }

            string query = "CREATE TABLE " + tableName + " (" + cols[0] + " " + colTypes[0];
            for (int i = 1; i < cols.Length; ++i)
            {
                query += ", " + cols[i] + " " + colTypes[i];
            }
            query += ")";

            return ExecuteQuery(query);
        }
          
        /// <summary>
        /// 插入數據
        /// </summary>
        /// <param name="tableName">數據庫表名</param>
        /// <param name="colName">目標列名集合</param>
        /// <param name="value">數據</param>
        public void InsertIntoSpecific(string tableName, string colName, string value)
        {
            try
            {
                string query = string.Format("INSERT INTO {0}({1}) VALUES ('{2}')", tableName, colName, value);

                ExecuteNonQuery(query);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        private void GetData()
        {   
            //連接mongodb數據庫
            mongoClient = new MongoClient("mongodb://localhost:27017");
            mongoServer = mongoClient.GetServer();
            mongoDatabase = mongoServer.GetDatabase("ZWAR");//根據mongo數據庫名獲取數據庫
            //獲取表單
            var collection = mongoDatabase.GetCollection<BsonDocument>("ZR2");
            //查找表中所有數據
            MongoCursor mongoCursor = collection.FindAll();
            mongoCursor.SetFlags(QueryFlags.NoCursorTimeout);
            foreach (BsonDocument book in mongoCursor)
            {
                    #region 數據格式整理
            
                    ................
                    #endregion
                    //更新要發送的數據
                    sendData = ;
                    
                    //打印數據到控制檯上
                    Console.WriteLine(sendData);
                    //插入數據
                    InsertIntoSpecific("allSignalData10", "content",sendData);
                }
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章