把sqlserver中的存储过程注释后创建到mysql中

   把sqlserver中的存储过程注释后创建到mysql中

  #!/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,"$nn");

  syswrite(FILE,"$data[0]n");

  syswrite(FILE,"$sqln");

  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,"$nn");

  syswrite(FILE,"$data[0]n");

  syswrite(FILE,"$sqln");

  close(FILE);

  $sth->execute() or die "$data_str----ERROR::$data_str::$dbh3->errstr";

  $dbh3->disconnect;

  print '创建'.$_[0].'表的存储过程结束'."n";

  }

时间: 2025-01-01 17:14:10

把sqlserver中的存储过程注释后创建到mysql中的相关文章

C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现

问题描述 C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现 就是主程序的一个方法 继承类库声明的方法后 通过类库生成的dll公开出去,主程序要如何让实现类库中声明的方法 解决方案 插件引用主程序可以了,也可以做一个公共的dll,插件和主程序都引用它. 在这个dll或者主程序中定义接口或者抽象类,在插件中实现或者继承

java调用2个数据库中的存储过程,连接池用的c3p0,当调用第二个数据库的存储过程时出错

问题描述 java调用2个数据库中的存储过程,连接池用的c3p0,当调用第二个数据库的存储过程时出错 我这个程序用了一个定时任务,连接池用的c3p0,然后dao层是调用的存储过程,调用的存储过程分布在2个数据库中.但是当程序执行的时候,先执行的那个数据库中的所有存储过程没问题,然后当执行到另外一个数据库中的存储过程时,调用这数据库中的存储过程就全部报错. 数据源: 调用存储过程: ! Config.getConfig(),是获取数据源: 报错信息就是:"xxx存储过程名"必须声明 如果

MySQL中管理表和索引的相关语句

1. 创建表 MySQL中创建表是通过create table语句实现的,语法这里就不介绍了,非常复杂,可以去官网上查询,所幸的是, 我们并不需要记住所有的选项,因为大部分都采用默认即可,下面介绍几个比较常用的选项. 1)指定存储引擎 默认的存储引擎由default-storage-engine指定,如果没有指定,则为MyISAM,如果建表时,你不想使用默认的存储 引擎,可以通过如下语句实现: create table table_name ( ... ) engine=engine_name;

查询mysql中执行效率低的sql语句的方法_Mysql

一些小技巧1. 如何查出效率低的语句?在MySQL下,在启动参数中设置 --log-slow-queries=[文件名],就可以在指定的日志文件中记录执行时间超过long_query_time(缺省为10秒)的SQL语句.你也可以在启动配置文件中修改long query的时间,如: 复制代码 代码如下:  # Set long query time to 8 seconds    long_query_time=8 2. 如何查询某表的索引?可使用SHOW INDEX语句,如: 复制代码 代码如

PHP 中执行排序与 MySQL 中排序_php技巧

此文首发在 InfoQ 中文站.作者:明灵(dragon) , Fenng . Note:要转载的朋友请注意注明这篇文章的第一作者!这篇文章是dragon 朋友来邮探讨后他做的一个总结.在 DB 中排序还是在 应用程序中排序是个很有趣的话题,dragon 第一份邮件中其实已经总结的很好了,我添加了一点建议而已.现在放上来,与大家共享.这篇文章也投稿到了 InfoQ 中文站 . Q:列出在 PHP 中执行排序要优于在 MYSQL 中排序的原因?给一些必须在MYSQL中排序的实例? A:通常来说,执

oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类型的数据:1.如果是整型,那么mysql中,用int即可:2.如果是带小数位的,那么mysql中可用numeric类型. 注:mysql中没有varchar2(10)和number这两个数据类型   二. Mysql varchar VS Oracle varchar2 mysql和oracle做数

mysql中为什么 字符串a1 满足 regepx ‘[1-9]’

问题描述 mysql中为什么 字符串a1 满足 regepx '[1-9]' mysql中为什么 字符串a1 满足 regepx '[1-9]',谢谢! 解决方案 因为你没有加^$,想确切的验证1-9哪的这么写'^[1-9]$'

在MySQL中使用JOIN语句进行连接操作的详细教程_Mysql

到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行为是指两个或多个表到一个表中可以使用连接在SELECT,UPDATE和DELETE语句中加入MySQL表.我们将看到一个例子LEFT JOIN简单的MySQL连接.在命令提示符使用联接: 假设我们两个表的教程tcount_tbl和tutorials_tbl的完整列表如下: 例子: 试试下面的例子:

讲解MySQL中<=>操作符的用法_Mysql

问题 : 我在看以前的一个开发者的代码时看到   WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常.我已经知道了mysql中的 <> = !=等符号.      最佳回答 :     和=号的相同点 像常规的=运算符一样,两个值进行比较,结果是0(不等于)或1(相等);换句话说:'A'<=>'B'得0和'a'<=>'a'得1. 2.和=号