MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2127|回复: 3
打印 上一主题 下一主题

请教:把dos导出的文件名做为变量,传给mysql

[复制链接]
跳转到指定楼层
1#
发表于 2012-5-11 20:30:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
背景:R:\2012-04-19,R:\2012-04-20,这样的目录很多(一天一个目录,日期号为目录名),而且这样的目录下面也有很多sz000555.xls,sh60000.xls类似文件(前缀是股票代码)。

要求:把这些文件夹下的文件导入数据库。文件名为表名,如无则创建,文件夹名由“YYYY-MM-DD”变为“YYYYMMDD”做为rq字段的值。



进展:

一、现通过cmd的批处理模式下执行nyt.bat。

C:\Documents and Settings\Administrator>mysql -u root -p < nyt.bat



nyt.bat内容如下:

use stock;

CREATE TABLE sz000548
   (
   rq date not null,
   sj time not null,
   cjj decimal(8,2) unsigned not null,
   ss mediumint not null,
   bs char(1) not null,
   index (rq,cjj,bs)
);

load data infile 'R:/2012-04-19/sz000548.xls' into table sz000548   IGNORE 1 LINES  (sj, cjj,@dummy,ss,@dummy,bs) set rq = 201200419;


测试通过,可以建表,导入数据。

二、使用cmd命令,获取目录下的文件名

echo off &for /f "tokens=*" %i in ('dir/b/a') do echo %~ni >>files.txt

把所有文件名导出到了files.txt中。


下面一步怎么解决:

把导出的文件名做为变量,传给mysql。在建表、导入数据中使用?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
 楼主| 发表于 2012-5-14 16:04:42 | 只看该作者
主要是想遍历一个目录,把里面的文件导入到mysql中,文件名做表名,目录名做为表里的一个字段名。
但是不知道mysql如何获取这两个变量。

有高手没?
3#
发表于 2012-5-14 17:30:46 | 只看该作者
目前,表名不能被参数化,用动态SQL可以解决,给你个例子照着写就可以了:
  1. USE `XXDB`$
  2. DROP PROCEDURE IF EXISTS `USP_LoadTableData`$
  3. CREATE DEFINER=`admin`@`%` PROCEDURE `USP_
  4. LoadTableData  `(v_TableName        VARCHAR(64))
  5. BEGIN
  6.         DECLARE v_stat VARCHAR(200);
  7.         SET @v_stat=CONCAT('select * from ',v_TableName);       
  8.         PREPARE SelectTableData FROM @v_stat;
  9.         EXECUTE SelectTableData;
  10.     END$
  11. DELIMITER ;
复制代码
4#
发表于 2012-5-24 16:34:12 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-11-10 07:56 , Processed in 0.073993 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表