sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
2014-04-09 16:49
701 查看
#!/usr/bin/perl use DBI; use Switch; use Encode; use Encode::CN; my $source_name = "sqldb"; my $source_user_name = "sa"; my $source_user_psd = "123"; my $db_name="mysqldb"; my $location="192.168.0.208"; my $port="3306"; my $db_user="zoe"; my $db_pass="123"; my $dbh=DBI->connect("dbi:ODBC:$source_name",$source_user_name,$source_user_psd); #获取所有的用户表 my $sth=$dbh->prepare("select name from sys.objects where type='P'"); $sth->execute(); my $n=0; my $ok=0; my $sort_column=""; while (@data=$sth->fetchrow_array()) { #print $data[0]; print '正在查询表'.$data[0]."的存储过程\n"; my $sql_create="EXEC Sp_HelpText '$data[0]'"; 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_array()) { $select_col.=$select_data; } do_sql($data[0],$select_col); } $sth->finish; $dbh ->disconnect; print '所有表的存储过程创建结束'."\n"; sub do_sql { print '开始创建'.$_[0].'表的存储过程'."\n"; my $sql=$_[1]; open(FILE,">>createtableallproduce.txt"); syswrite(FILE,"$n\n"); syswrite(FILE,"$data[0]\n"); syswrite(FILE,"$sql\n"); close(FILE); $sql=~s/\/\*/------注释开始--------/g; $sql=~s/\*\//------注释结束--------/g; $sql='CREATE PROCEDURE '.$_[0].'()'." \n".' BEGIN '."\n".' /* '.$sql.'*/'."\n".'END; '; my $data_base = "DBI:mysql:$db_name:$location:$port"; my $dbh3=DBI -> connect($data_base,$db_user,$db_pass); $dbh3->do("SET character_set_client = 'utf8'"); $dbh3->do("SET character_set_connection = 'utf8'"); my $data_str=encode("utf-8",decode("gbk",$sql)); my $sth=$dbh3->prepare($sql); open(FILE,">>myproduce.txt"); syswrite(FILE,"$n\n"); syswrite(FILE,"$data[0]\n"); syswrite(FILE,"$sql\n"); close(FILE); $sth->execute() or die "$data_str----ERROR::$data_str::$dbh3->errstr"; $dbh3->disconnect; print '创建'.$_[0].'表的存储过程结束'."\n"; }
相关文章推荐
- sqlserver数据导入mysql八: 把sqlserver中的存储过程注释后创建到mysql中(留着人工修改)
- mysql-存储过程案例-存储过程中创建表和修改表数据
- sqlserver数据导入mysql四:给sqlserver中的表创建索引
- mysql存储过程循环修改每一条数据
- MySql存储过程动态创建表并插入数据
- MySQL存储过程动态创建表,数据分表
- MySQL 5.1 无法创建、修改存储过程的解决(简单问题)
- sqlserver查询存储过程的创建时间及最后修改时间
- sqlserver查询存储过程的创建时间及最后修改时间
- Mysql创建用户表并利用存储过程添加100万条随机用户数据
- MySQL动态创建表,数据分表的存储过程
- sqlserver查询存储过程的创建时间及最后修改时间
- MYSQL用存储过程创建百万级测试数据表
- mysql 利用mysqldump 导入导出表结构、数据、存储过程及函数
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- sqlserver数据导入mysql一: 创建mysql数据库 perl脚本
- HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令
- sqlserver数据导入mysql一: 创建mysql数据库 perl脚本
- SQLServer存储过程创建和修改的实现代码