files2db.pl
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/usr/bin/perl
  2. require "db_api.pl";
  3. if (scalar(@ARGV) != 5) {
  4.     &usage;
  5.     exit;
  6. }
  7. &header;
  8. # remove a trailing /
  9. $dirpath = $ARGV[0];
  10. $dirpath =~ s!(.*)/$!$1!;
  11. $dbh = &db_init($ARGV[1], $ARGV[2], $ARGV[3], $ARGV[4]);
  12. opendir FILEDIR, $dirpath or die "Error opening filedir!n";
  13. while ($filename = readdir FILEDIR) {
  14.     if ($filename =~ m/^./) { next; } #ignore . and ..
  15.     
  16.     if ( ! (($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
  17.     $atime,$mtime,$ctime,$blksize,$blocks) = stat "$dirpath/$filename" )) {
  18.         print "Error stat-ing the file $pathdir/$filename!n" ; next; }
  19.     
  20.     $type = ($mode & 070000) >> 12;
  21.     
  22.     if ($type != 0) {
  23. print "File $dirpath/$filename its not regularn";
  24. next;
  25.     }
  26.     convertfile2db("$dirpath/$filename");
  27. }
  28. closedir FILEDIR;
  29. sub convertfile2db {
  30.     my $filen = shift;
  31.     my ($userid, $count, $alist);
  32.     
  33.     open FILE, $filen or die "Error opening file $filenn";
  34.     print "Converting file $filen ... ";
  35.     
  36.     $count = 0;
  37.     $userid = ""; undef @alist;
  38.     while($line = <FILE>) {
  39. if ($line =~ m/".*"=".*"/) {
  40.     $line =~ m/^"([A-Za-z0-9]+)\\(.*)"="(.*)"/;
  41.     $alist[$count]{tab} = $1;
  42.     $alist[$count]{col} = $2;
  43.     $alist[$count]{val} = $3;
  44.     $alist[$count]{col} =~ s!\\!_!g;
  45.     if ($alist[$count]{col} =~ m!userid$!) {
  46. $userid = $alist[$count]{val};
  47.     }
  48.     $count++;
  49. }
  50.     }
  51.     if ($userid ne "") {
  52. &db_set($dbh, $userid, $alist);
  53.     }
  54.     close FILE;
  55.     print "donen";
  56. }
  57. sub header {
  58.     print "Account files to db accounts converting tool.n";
  59.     print " Copyright (C) 2002 Mihai RUSU (dizzy@roedu.net)n";
  60.     print " People Versus People Gaming Network (www.pvpgn.org)nn";
  61. }
  62. sub usage {
  63.     &header;
  64.     print "Usage:nntfiles2db.pl <filedir> <dbhost> <dbname> <dbuser> <dbpass>nn";
  65.     print "t <filedir>t: directory with the account filesn";
  66.     print "t <dbhost>t: the database hostn";
  67.     print "t <dbname>t: the database namen";
  68.     print "t <dbuser>t: the database usern";
  69.     print "t <dbpass>t: the database passwordn";
  70. }