#!/usr/bin/perl $db = "mob_db"; $nb_columns = 57; @str_col = (1,2,3); $create_table = "# # Table structure for table `mob_db` # DROP TABLE IF EXISTS `mob_db`; CREATE TABLE `mob_db` ( `ID` mediumint(9) unsigned NOT NULL default '0', `Sprite` text NOT NULL, `kName` text NOT NULL, `iName` text NOT NULL, `LV` tinyint(6) unsigned NOT NULL default '0', `HP` int(9) unsigned NOT NULL default '0', `SP` mediumint(9) unsigned NOT NULL default '0', `EXP` mediumint(9) unsigned NOT NULL default '0', `JEXP` mediumint(9) unsigned NOT NULL default '0', `Range1` tinyint(4) unsigned NOT NULL default '0', `ATK1` smallint(6) unsigned NOT NULL default '0', `ATK2` smallint(6) unsigned NOT NULL default '0', `DEF` smallint(6) unsigned NOT NULL default '0', `MDEF` smallint(6) unsigned NOT NULL default '0', `STR` smallint(6) unsigned NOT NULL default '0', `AGI` smallint(6) unsigned NOT NULL default '0', `VIT` smallint(6) unsigned NOT NULL default '0', `INT` smallint(6) unsigned NOT NULL default '0', `DEX` smallint(6) unsigned NOT NULL default '0', `LUK` smallint(6) unsigned NOT NULL default '0', `Range2` tinyint(4) unsigned NOT NULL default '0', `Range3` tinyint(4) unsigned NOT NULL default '0', `Scale` tinyint(4) unsigned NOT NULL default '0', `Race` tinyint(4) unsigned NOT NULL default '0', `Element` tinyint(4) unsigned NOT NULL default '0', `Mode` smallint(6) unsigned NOT NULL default '0', `Speed` smallint(6) unsigned NOT NULL default '0', `aDelay` smallint(6) unsigned NOT NULL default '0', `aMotion` smallint(6) unsigned NOT NULL default '0', `dMotion` smallint(6) unsigned NOT NULL default '0', `MEXP` mediumint(9) unsigned NOT NULL default '0', `MVP1id` smallint(9) unsigned NOT NULL default '0', `MVP1per` smallint(9) unsigned NOT NULL default '0', `MVP2id` smallint(9) unsigned NOT NULL default '0', `MVP2per` smallint(9) unsigned NOT NULL default '0', `MVP3id` smallint(9) unsigned NOT NULL default '0', `MVP3per` smallint(9) unsigned NOT NULL default '0', `Drop1id` smallint(9) unsigned NOT NULL default '0', `Drop1per` smallint(9) unsigned NOT NULL default '0', `Drop2id` smallint(9) unsigned NOT NULL default '0', `Drop2per` smallint(9) unsigned NOT NULL default '0', `Drop3id` smallint(9) unsigned NOT NULL default '0', `Drop3per` smallint(9) unsigned NOT NULL default '0', `Drop4id` smallint(9) unsigned NOT NULL default '0', `Drop4per` smallint(9) unsigned NOT NULL default '0', `Drop5id` smallint(9) unsigned NOT NULL default '0', `Drop5per` smallint(9) unsigned NOT NULL default '0', `Drop6id` smallint(9) unsigned NOT NULL default '0', `Drop6per` smallint(9) unsigned NOT NULL default '0', `Drop7id` smallint(9) unsigned NOT NULL default '0', `Drop7per` smallint(9) unsigned NOT NULL default '0', `Drop8id` smallint(9) unsigned NOT NULL default '0', `Drop8per` smallint(9) unsigned NOT NULL default '0', `Drop9id` smallint(9) unsigned NOT NULL default '0', `Drop9per` smallint(9) unsigned NOT NULL default '0', `DropCardid` smallint(9) unsigned NOT NULL default '0', `DropCardper` smallint(9) unsigned NOT NULL default '0', PRIMARY KEY (`ID`) ) ENGINE=MyISAM; "; printf("%s\n",$create_table); while ($ligne=<STDIN>) { if ($ligne =~ /[^\r\n]+/) { $ligne = $&; if ($ligne =~ /^\/\//) { printf("# "); $ligne = substr($ligne, 2); } @champ = split (",",$ligne); if ($#champ != $nb_columns - 1) { # Can't parse, it's a real comment printf ("%s\n", $ligne); } else { printf("REPLACE INTO `%s` VALUES (", $db); for ($i=0; $i<$#champ; $i++) { printField($champ[$i],",",$i); } printField($champ[$#champ],");\n",$#champ); } } } print("\n"); sub printField { my ($str, $suffix, $idCol) = @_; # Remove first { and last } if ($str =~ /{.*}/) { $str = substr($&,1,-1); } # Remove comment at end of line if ($str =~ /[^\/]*\/\//) { $str = substr($&,0,-2); } # If nothing, put NULL if ($str eq "") { printf("NULL%s", $suffix); } else { my $flag = 0; # Search if it's a string column ? foreach $col (@str_col) { if ($col == $idCol) { $flag = 1; break; } } if ($flag == 1) { # String column, so escape and add '' printf("'%s'%s", escape($str), $suffix); } else { # Not a string column printf("%s%s", $str,$suffix); } } } sub escape { my ($str) = @_; my @str_splitted = split("'", $str); my $result = ""; for (my $i=0; $i<=$#str_splitted; $i++) { if ($i == 0) { $result = @str_splitted[0]; } else { $result = $result."\\'".@str_splitted[$i]; } } return $result }