1、环境需求描述:用户内网有一台oracle10g库,外网有一台oracle9i。用户通过内网发布人才招聘相关信息,所有的信息在一张表里面,运行一个export/import脚本把
1、环境需求描述:
用户内网有一台oracle 10g库,外网有一台oracle 9i。用户通过内网发布人才招聘相关信息,所有的信息在一张表里面,运行一个export/import脚本把内网该表同步到外网表,内网和外网之间应该 是建立了临时表lb_retain,这张表是作为外网应用使用。该用户开发的新CMS系统(ASP.NET),数据库是采用MSSQL SERVER 2005 X64,该数据库也是位于外网环境中。由于用户发布招聘信息不想在新CMS平台上进行,香港虚拟主机,所以不得不对这一信息进行整合。最终要使该招聘信息能在新网站上显 示给最终用户。
2、解决思路:
分析以上需求,网站空间,即源oracle库同 步到目标mssql 2005,为了达到异构库环境的表与表之间的数据同步,本次解决方案是采用了MSSQL商业智能解决方案,美国服务器,用SQL Server Business Intelligence Development Studio工具创建Integration Services 项目创建DTS包,该包可以处理非常复杂的数据挖掘工作(如果源是mssql,目标是oracle的话,可以使用oracle的透明网关)。其中,我建立 从oracle抽取数据并插入到新网站所对应的MSSQL表招聘里面。这样就达到了整合的效果,只要拿到了数据插入到新应用所在的库里面去,就可以整合到 了新应用的所有功能,而不需要二次开发,也不需要写应用层代码来操作oracle库了。
3、解决过程
(1)新建Integration services项目
(2)SSIS导入导出向导--建立基本的数据库连接串以及基本的SQL,选择源
(3)选择目标
(4)编写SQL语句
(5)建立源列到目标表的列的映射
(6)下一步,警告先不管
(7)分别添加“数据转换”、“派生列”、“脚本组件”
“数据转换”把源ORACLE的varchar2列转换为MSSQL所兼容的列
(8)“派生列”
根据你的业务不同配置也是不太一样的,这里所要添加“派生列”是因为源ORACLE库没有与目标库对应的列,所以要在同步的过程中生成新列并赋初值
(9)“脚本组件”
“脚本组件”是为了处理比较复杂的业务流程,比如本方案有一个字段是要自增的,所以要编写脚本
设置输入列
设计脚本:
ScriptMain:
' Microsoft SQL Server Integration Services user script component
' This is your new script component in Microsoft Visual Basic .NET
' ScriptMain is the entrypoint class for script components
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain
Inherits UserComponent
Dim intCounter As Integer = 1 'Set intial value here
Public Overrides Sub 输入0_ProcessInputRow(ByVal Row As 输入0Buffer)
Row.Taxis = intCounter
intCounter = intCounter + 1 ' Set the incremental value here
End Sub
End Class
BufferWrapper
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Public Class 输入0Buffer
Inherits ScriptBuffer
Public Sub New(ByVal Buffer As PipelineBuffer, ByVal BufferColumnIndexes As Integer())
MyBase.New(Buffer, BufferColumnIndexes)
End Sub
Public Property [Taxis]() As Int32
Get
Return CType(Me(0), Int32)
End Get
Set
Me(0) = Value
End Set
End Property
Public Property [Taxis_IsNull] As Boolean
Get
Return IsNull(0)
End Get
Set
SetNull(0)
End Set
End Property
Public Function NextRow() As Boolean
NextRow = MyBase.NextRow()
End Function
Public Function EndOfRowset() As Boolean
EndOfRowset = MyBase.EndOfRowset
End Function
End Class
ComponentWrapper
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class UserComponent
Inherits ScriptComponent
Public Connections As New Connections(Me)
Public Variables As New Variables(Me)
Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal Buffer As PipelineBuffer)
If InputID = 1572 Then
输入0_ProcessInput(New 输入0Buffer(Buffer, GetColumnIndexes(InputID)))
End If
End Sub
Public Overridable Sub 输入0_ProcessInput(ByVal Buffer As 输入0Buffer)
While Buffer.NextRow()
输入0_ProcessInputRow(Buffer)
End While
End Sub
Public Overridable Sub 输入0_ProcessInputRow(ByVal Row As 输入0Buffer)
End Sub
End Class
Public Class Connections
Dim ParentComponent As ScriptComponent
Public Sub New(ByVal Component As ScriptComponent)
ParentComponent = Component
End Sub
End Class
Public Class Variables
Dim ParentComponent As ScriptComponent
Public Sub New(ByVal Component As ScriptComponent)
ParentComponent = Component
End Sub
End Class
(10)打开“目标”的数据流
建立映射关系
(11)设置一下ETL包,不然等下添加JOB的时候有可能出错
“项目属性”-“调试”-“调试选项”-Run64BitRuntime=false(后面讲解释原因)
包的加密方式用-EncryptSensitiveWithPassword
(12)直接执行该包,看结果,没有错误,成功后就开始把它加入到MSSQL的JOB
打开SQL Server Management Studio并开启SQL SERVER代理,新建作业,详细怎么去创建可以做官网去查文档,这里只讲关键步骤:

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

EXPLAIN命令的關鍵指標包括type、key、rows和Extra。 1)type反映查詢的訪問類型,值越高效率越高,如const優於ALL。 2)key顯示使用的索引,NULL表示無索引。 3)rows預估掃描行數,影響查詢性能。 4)Extra提供額外信息,如Usingfilesort提示需要優化。

Usingtemporary在MySQL查詢中表示需要創建臨時表,常見於使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通過優化索引和重寫查詢避免其出現,提升查詢性能。具體來說,Usingtemporary出現在EXPLAIN輸出中時,意味著MySQL需要創建臨時表來處理查詢。這通常發生在以下情況:1)使用DISTINCT或GROUPBY時進行去重或分組;2)ORDERBY包含非索引列時進行排序;3)使用複雜的子查詢或聯接操作。優化方法包括:1)為ORDERBY和GROUPB

MySQL/InnoDB支持四種事務隔離級別:ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。 1.ReadUncommitted允許讀取未提交數據,可能導致臟讀。 2.ReadCommitted避免臟讀,但可能發生不可重複讀。 3.RepeatableRead是默認級別,避免臟讀和不可重複讀,但可能發生幻讀。 4.Serializable避免所有並發問題,但降低並發性。選擇合適的隔離級別需平衡數據一致性和性能需求。

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。