背景: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。在建表、导入数据中使用?

解决方案 »

  1.   

    你这个问题应该还是在dos里面做文章
      

  2.   

    索引在DOS中用VBS来实现了。 遍历目录,得到文件名,执行 mysql -e "create table xxx",然后再 mysqldump 
      

  3.   

    在dos下执行mysql -e "create table 变量"
    然后再load data
      

  4.   

    示例:
    for /f "tokens=*" %%i in ('dir/b/a') do (d:\mysql55\bin\mysql -uroot -p123 -e "use aa;create table `%%i`(id int)")
      

  5.   

    是想遍历一个目录,把里面的文件导入到mysql中,文件名做表名,目录名做为表里的一个字段名。
    但是不知道mysql如何获取这两个变量。
      

  6.   

    R:\2012-04-19>for /f "tokens=*" %i in ('dir/b/a') do (mysql -uroot -e "use nyt;create ta
    `(id int)")R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000559.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000565.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000566.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000567.xls`(id int)" )以上是测试建库,通过。谢谢。还不知道怎么导入数据,正在测试。高手方便,直接给提示。
      

  7.   

    R:\2012-04-19>for /f "tokens=*" %i in ('dir/b/a') do (mysql -uroot -e "use nyt;create ta
    `(id int)")R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000559.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000565.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000566.xls`(id int)" )R:\2012-04-19>(mysql -uroot -e "use nyt;create table `sz000567.xls`(id int)" )
    以上是测试建库,通过。数据要怎么样导入呢?
      

  8.   

    mysqldump -u root -p mysql<d:\mysql.sql
      

  9.   

    LOAD DATA col_num INFILE “c:/1.txt" INTO TABLE tablename; 
      

  10.   

    导入文件要用mysqlimport,或load data,二楼为什么说用mysqldump,是笔误,还是这是更便捷的方法?倾向于用mysqlimport,因为这个就有可能再用上dos给的变量。毕竟还是要用文件夹做rq(日期)字段的变量,文件名做欲导入的表的变量。明天继续测试。高手能出手,就省事多了。谢谢
      

  11.   

    原来用load data,这个在mysql里是可以的,没问题。
    可是要接收dos的变量,估计就只有用mysqlimport了。
      

  12.   

    用load data也可以,你测试一下,
    for /f "tokens=*" %%i in ('dir/b/a') do (d:\mysql55\bin\mysql -uroot -p123 -e "use aa;create table `%%i`(id int);load data inifile `%%i` INTO TABLE `%%i`")