绝对小白写的,真是不知道从哪儿下手纠错:
delimiter $
CREATE PROCEDURE MEMORY2(IN count int)
BEGIN 
DECLARE i integer(11); 
DECLARE count integer(11);
DECLARE sqlstr VARCHAR(2560);
DECLARE siteCount integer(11); 
DECLARE sqlinsert VARCHAR(2560); 
set i = 1;
WHILE (i-1)<count DO 
SET @sqlstr = CONCAT('CREATE TABLE memory',`@i`,'(
id int(10) not null auto_increment,
Time varchar(100),
EventType varchar(100),
EventTime int(50),
PackageName varchar(100),
ClassName varchar(100),
Text varchar(100),
ContentDescription varchar(100),
bounds varchar(100),
primary key(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8'); 
prepare stmt from @sqlstr; 
execute stmt;  
SET @sqlinsert = CONCAT('
load data local infile "c:/txt/',`@i`,'.txt" into table memory',`@i`,'(Time,EventType,EventTime,PackageName,ClassName,Text,ContentDescription,bounds)'
);
prepare stmt from @sqlinsert; 
execute stmt; 
SET i= i+1; 
END WHILE; 
END 
$
下面是调用:
delimiter $
set @count=3;
call MEMORY2(@count);
$
求大神们看看,急!

解决方案 »

  1.   

     去掉 DECLARE count integer(11); 
      

  2.   

    去掉 DECLARE count integer(11);
      

  3.   

    SET @sqlstr = CONCAT('CREATE TABLE memory',i,'(...
      

  4.   

    改了这句已经可以成功建表了,求大神再帮忙看看
    load data local infile "c:/txt/',`@i`,'.txt" into table memory',`@i`,'(Time,EventType,EventTime,PackageName,ClassName,Text,ContentDescription,bounds)'
    c盘根目录下存在1.txt这样的文档且里面有数据,为什么没有数据导入到数据库呢
      

  5.   

    不好意思上面copy错了,下面这句改成这样了
    SET @sqlinsert = CONCAT('
    load data local infile "c:/',i,'.txt" into table memory',i,' (Time,EventType,EventTime,PackageName,ClassName,Text,ContentDescription,bounds)'
    );
    prep
      

  6.   

    错误好像还是出现在建表的那个地方,运行存储过程之后会提示memory1已经存在,所以没有走到后面插入数据的语句
      

  7.   

    将memory1-n表先删除,再运行SP
      

  8.   


    先运行drop table memory1;drop table memory2; ....drop table memoryN;
    再重新call MEMORY2(@count);
      

  9.   

    数据库里本来是没有表的,也会出现memory1已经存在的问题
    还有建表不是临时的,如果drop掉不是用不了吗