我现在两个版本的数据库,1.0和2.0
表有200多张表2.0增加了很多表,还包括1.0的所有表字段现在是1.0升级到2.0的时候数据整个迁移到2.0的数据库中,第次升级把数据复制上来很麻烦,如何自动生成SQL语句,执行一下让数据自动到2.0来
表有200多张表2.0增加了很多表,还包括1.0的所有表字段现在是1.0升级到2.0的时候数据整个迁移到2.0的数据库中,第次升级把数据复制上来很麻烦,如何自动生成SQL语句,执行一下让数据自动到2.0来
定义2个Connection ,分别连接1.0 与 2.0 的数据库没装SQL,要不写给你
如生成下面SQL
insert into 表1(字段1,字段2..) Select 字段1,字段2..from 1.0的表1
insert into 表2(字段1,字段2..) Select 字段1,字段2..from 1.0的表2
.......
1.0中有多少表就生成多少行这种代码,1.0的表中有多少字段就生成多少字段1.0的表、字段在2.0中都有
这类SQL呢?
还是用数据导入吧,不过导入前别忘了清理2.0中相同和相关的数据,以避免重复。
Dim cn As ADODB.Connection
Dim rsTable As ADODB.Recordset
Dim rsColumns As ADODB.Recordset
Dim fld As ADODB.Field
Dim sList As String
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;" & _
"Data Source=(local);Initial Catalog=db1;" & _
"User ID=sa;password=;"
Set rsTable = cn.Execute("sp_tables @table_type = ""'TABLE'""")
While Not rsTable.EOF
sList = vbNullString
Set rsColumns = cn.Execute("sp_columns @table_name = '" & rsTable!TABLE_NAME & "'")
While Not rsColumns.EOF
sList = sList & "," & rsColumns!COLUMN_NAME
rsColumns.MoveNext
Wend
sList = Mid$(sList, 2)
Debug.Print "INSERT INTO db2.dbo." & rsTable!TABLE_NAME;
Debug.Print "(" & sList & ")";
Debug.Print " SELECT " & sList;
Debug.Print " FROM db1.dbo." & rsTable!TABLE_NAME
rsTable.MoveNext
Wend
End Sub
将1.0版本的数据导出至脚本1,将2.0版本的数据导出至脚本2然后以文本的形式分别打开二个脚本,将2.0版本的数据复制到1.0里面(或者倒过来也可以)我以前做的库由于前台程序进行大批量功能更新,在更新中,新库中需要对旧库进行依赖性更新,我就用了上面的办法,仔细研究了新,旧二个库的脚本,然后直接改脚本,最后让新的脚本在分析器里执行!
for select Name from sysobjects where xtype in('U') order by Name
open mycursors
fetch next from mycursors into @TableName
while @@fetch_Status=0
Begin
set @TempColumns=''
declare CursorsColumns cursor
for select Name from syscolumns where id=object_id(@TableName)
open CursorsColumns
fetch next from CursorsColumns into @TableColumn
while @@fetch_Status=0
Begin
if exists(select 1 From 2.0.dbo.SysColumns Where Name=@TableColumn And ID in(Select ID From 2.0.dbo.Sysobjects Where Name=@TableName))
Begin
set @TempColumns=@TempColumns+@TableColumn+','
End
fetch next from CursorsColumns into @TableColumn
End
close CursorsColumns
deallocate CursorsColumns fetch next from mycursors into @TableName
End
close mycursors
deallocate mycursors