sqlserver数据导入mysql四:给sqlserver中的表创建索引
2014-04-09 15:18
513 查看
#!/usr/bin/perl use DBI; use Switch; use Encode; use Encode::CN; # my $source_name = "zoe"; # my $source_user_name = "sa"; # my $source_user_psd = "123"; # my $db_name="mysqlDb"; # my $location="192.168.0.46"; # my $port="3306"; # my $db_user="zoe"; # my $db_pass="123"; my $source_name = "zoe"; my $source_user_name = "sa"; my $source_user_psd = "123"; my $dbh=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd); #获取所有的用户表 my $sth=$dbh->prepare("select name,object_id from sys.all_objects where type='U' and is_ms_shipped=0 and name <>'sysdiagrams'"); $sth->execute(); my $n=0; my $ok=0; my $sort_column=""; while (@data=$sth->fetchrow_array()) { #print $data[0].$data[1]; $n+=1; $ok=0; #获取列 get_columns($data[0],$data[1]); if($ok ==1){ print '正在测试'.$data[0].'表的索引'.$sort_column."\n"; my $sql_create="select * from sysindexes where id=object_id('$data[0]') and name='$sort_column'"; my $dbh_mssql=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd,{RaiseError =>1}); $dbh_mssql->{LongTruncOk}=1; $dbh_mssql->{LongReadLen}=1048576; my $sth_select=$dbh_mssql->prepare($sql_create); $sth_select->execute() or die 'Cannot execute: '. $sth_select->errstr(); my @select_col; my $select_data; while($select_data=$sth_select->fetchrow_arrayref()) { $select_col[$nn]=[@$select_data]; } my $col=@select_col; if($col !=0) { print '表'.$data[0].'已存在索引'.$sort_column."\n"; } else { do_sql($data[0],$sort_column); open(FILE,">>createtableallindex.txt"); syswrite(FILE,"$n\n"); syswrite(FILE,"$data[0]\n"); close(FILE); } } } $sth->finish; $dbh ->disconnect; print '所有表的索引创建结束'."\n"; ##获取所有的列 sub get_columns { $dbh2=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd); my $sql="select col.name,tp.name,col.max_length,col.[precision],col.[scale],col.[is_nullable],col.[is_identity] from sys.all_columns col inner join sys.types tp on col.system_type_id=tp.system_type_id and col.user_type_id=tp.user_type_id where object_id=$_[1]"; my $cols=$dbh2 -> prepare($sql); $cols->execute(); my $cols_str = ""; my $n=0; $sort_column=""; while(@col= $cols->fetchrow_array()) { ($col_name,$type_name,$max_length,$precision,$scale,$is_nullable,$is_identity)=@col; if($is_identity == 1) { $ok=1; $sort_column="$col_name"; } } } sub do_sql { print '开始创建'.$_[0].'表的索引'.$_[1]."\n"; my $sql_create="CREATE UNIQUE INDEX $_[1] ON $_[0] ($_[1])"; my $dbh_mssql=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd,{RaiseError =>1}); $dbh_mssql->{LongTruncOk}=1; $dbh_mssql->{LongReadLen}=1048576; my $sth_select=$dbh_mssql->prepare($sql_create); # open(FILE,">>all_export_data222.txt"); # syswrite(FILE,"$sql_select\n"); # close(FILE); $sth_select->execute() or die 'Cannot execute: '. $sth_select->errstr(); print '创建'.$_[0].'表的索引'.$_[1].'结束'."\n"; }
相关文章推荐
- sqlserver数据导入mysql四:给sqlserver中的表创建索引
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- sqlserver数据导入mysql一: 创建mysql数据库 perl脚本
- sqlserver数据导入mysql一: 创建mysql数据库 perl脚本
- (搜索引擎之solr) sorl运行环境的搭建及从mysql中导入数据创建索引
- mysql 批处理文件 创建 数据 导入数据
- 数据库学习纪要(二十二):MySQL创建数据库、表,及导入CSV文件数据2
- MySQL表的创建,数据批量导入指南.
- 将sqlserver的数据导入Mysql中
- sqlserver 中数据导入到mysql中的方法以及注意事项
- mysql 批处理文件--- 创建 用户 以及 导入数据
- Day59-Oracle03 - 创建表空间、创建表(子查询创建表)、表的约束、事务、数据库对象(视图、序列、索引、同义词)、PLSQL编程、(if,循环)、数据的导入导出备份
- Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引
- sqlserver 导入数据出现 无法创建 OLE DB 取值函数。请查看列元数据是否有效
- Mysql 创建数据库、用户、授权、导入数据
- MySQL创建数据表 建索引
- sqlserver数据导入mysql二: 根据sqlserver表结构创建mysql表的perl代码
- 利用ODBC将数据从SQLServer导入MYSQL(Win7-64位)