[1] | 1 | #!/usr/bin/perl |
---|
| 2 | $db = "mob_db"; |
---|
| 3 | $nb_columns = 58; |
---|
| 4 | @str_col = (1,2,3); |
---|
| 5 | $create_table = "# |
---|
| 6 | # Table structure for table `mob_db` |
---|
| 7 | # |
---|
| 8 | |
---|
| 9 | DROP TABLE IF EXISTS `mob_db`; |
---|
| 10 | CREATE TABLE `mob_db` ( |
---|
| 11 | `ID` mediumint(9) unsigned NOT NULL default '0', |
---|
| 12 | `Sprite` text NOT NULL, |
---|
| 13 | `kName` text NOT NULL, |
---|
| 14 | `iName` text NOT NULL, |
---|
| 15 | `LV` tinyint(6) unsigned NOT NULL default '0', |
---|
| 16 | `HP` int(9) unsigned NOT NULL default '0', |
---|
| 17 | `SP` mediumint(9) unsigned NOT NULL default '0', |
---|
| 18 | `EXP` mediumint(9) unsigned NOT NULL default '0', |
---|
| 19 | `JEXP` mediumint(9) unsigned NOT NULL default '0', |
---|
| 20 | `Range1` tinyint(4) unsigned NOT NULL default '0', |
---|
| 21 | `ATK1` smallint(6) unsigned NOT NULL default '0', |
---|
| 22 | `ATK2` smallint(6) unsigned NOT NULL default '0', |
---|
| 23 | `DEF` smallint(6) unsigned NOT NULL default '0', |
---|
| 24 | `MDEF` smallint(6) unsigned NOT NULL default '0', |
---|
| 25 | `STR` tinyint(4) unsigned NOT NULL default '0', |
---|
| 26 | `AGI` tinyint(4) unsigned NOT NULL default '0', |
---|
| 27 | `VIT` tinyint(4) unsigned NOT NULL default '0', |
---|
| 28 | `INT` tinyint(4) unsigned NOT NULL default '0', |
---|
| 29 | `DEX` tinyint(4) unsigned NOT NULL default '0', |
---|
| 30 | `LUK` tinyint(4) unsigned NOT NULL default '0', |
---|
| 31 | `Range2` tinyint(4) unsigned NOT NULL default '0', |
---|
| 32 | `Range3` tinyint(4) unsigned NOT NULL default '0', |
---|
| 33 | `Scale` tinyint(4) unsigned NOT NULL default '0', |
---|
| 34 | `Race` tinyint(4) unsigned NOT NULL default '0', |
---|
| 35 | `Element` tinyint(4) unsigned NOT NULL default '0', |
---|
| 36 | `Mode` smallint(6) unsigned NOT NULL default '0', |
---|
| 37 | `Speed` smallint(6) unsigned NOT NULL default '0', |
---|
| 38 | `aDelay` smallint(6) unsigned NOT NULL default '0', |
---|
| 39 | `aMotion` smallint(6) unsigned NOT NULL default '0', |
---|
| 40 | `dMotion` smallint(6) unsigned NOT NULL default '0', |
---|
| 41 | `MEXP` mediumint(9) unsigned NOT NULL default '0', |
---|
| 42 | `ExpPer` smallint(9) unsigned NOT NULL default '0', |
---|
| 43 | `MVP1id` smallint(9) unsigned NOT NULL default '0', |
---|
| 44 | `MVP1per` smallint(9) unsigned NOT NULL default '0', |
---|
| 45 | `MVP2id` smallint(9) unsigned NOT NULL default '0', |
---|
| 46 | `MVP2per` smallint(9) unsigned NOT NULL default '0', |
---|
| 47 | `MVP3id` smallint(9) unsigned NOT NULL default '0', |
---|
| 48 | `MVP3per` smallint(9) unsigned NOT NULL default '0', |
---|
| 49 | `Drop1id` smallint(9) unsigned NOT NULL default '0', |
---|
| 50 | `Drop1per` smallint(9) unsigned NOT NULL default '0', |
---|
| 51 | `Drop2id` smallint(9) unsigned NOT NULL default '0', |
---|
| 52 | `Drop2per` smallint(9) unsigned NOT NULL default '0', |
---|
| 53 | `Drop3id` smallint(9) unsigned NOT NULL default '0', |
---|
| 54 | `Drop3per` smallint(9) unsigned NOT NULL default '0', |
---|
| 55 | `Drop4id` smallint(9) unsigned NOT NULL default '0', |
---|
| 56 | `Drop4per` smallint(9) unsigned NOT NULL default '0', |
---|
| 57 | `Drop5id` smallint(9) unsigned NOT NULL default '0', |
---|
| 58 | `Drop5per` smallint(9) unsigned NOT NULL default '0', |
---|
| 59 | `Drop6id` smallint(9) unsigned NOT NULL default '0', |
---|
| 60 | `Drop6per` smallint(9) unsigned NOT NULL default '0', |
---|
| 61 | `Drop7id` smallint(9) unsigned NOT NULL default '0', |
---|
| 62 | `Drop7per` smallint(9) unsigned NOT NULL default '0', |
---|
| 63 | `Drop8id` smallint(9) unsigned NOT NULL default '0', |
---|
| 64 | `Drop8per` smallint(9) unsigned NOT NULL default '0', |
---|
| 65 | `Drop9id` smallint(9) unsigned NOT NULL default '0', |
---|
| 66 | `Drop9per` smallint(9) unsigned NOT NULL default '0', |
---|
| 67 | `DropCardid` smallint(9) unsigned NOT NULL default '0', |
---|
| 68 | `DropCardper` smallint(9) unsigned NOT NULL default '0', |
---|
| 69 | PRIMARY KEY (`ID`) |
---|
| 70 | ) ENGINE=MyISAM; |
---|
| 71 | "; |
---|
| 72 | printf("%s\n",$create_table); |
---|
| 73 | while ($ligne=<STDIN>) |
---|
| 74 | { |
---|
| 75 | if ($ligne =~ /[^\r\n]+/) |
---|
| 76 | { |
---|
| 77 | $ligne = $&; |
---|
| 78 | if ($ligne =~ /^\/\//) |
---|
| 79 | { |
---|
| 80 | printf("# "); |
---|
| 81 | $ligne = substr($ligne, 2); |
---|
| 82 | } |
---|
| 83 | @champ = split (",",$ligne); |
---|
| 84 | if ($#champ != $nb_columns - 1) |
---|
| 85 | { |
---|
| 86 | # Can't parse, it's a real comment |
---|
| 87 | printf ("%s\n", $ligne); |
---|
| 88 | } else { |
---|
| 89 | printf("REPLACE INTO `%s` VALUES (", $db); |
---|
| 90 | for ($i=0; $i<$#champ; $i++) |
---|
| 91 | { |
---|
| 92 | printField($champ[$i],",",$i); |
---|
| 93 | } |
---|
| 94 | printField($champ[$#champ],");\n",$#champ); |
---|
| 95 | } |
---|
| 96 | } |
---|
| 97 | } |
---|
| 98 | |
---|
| 99 | sub printField { |
---|
| 100 | my ($str, $suffix, $idCol) = @_; |
---|
| 101 | # Remove first { and last } |
---|
| 102 | if ($str =~ /{.*}/) |
---|
| 103 | { |
---|
| 104 | $str = substr($&,1,-1); |
---|
| 105 | } |
---|
| 106 | # Remove comment at end of line |
---|
| 107 | if ($str =~ /[^\/]*\/\//) |
---|
| 108 | { |
---|
| 109 | $str = substr($&,0,-2); |
---|
| 110 | } |
---|
| 111 | # If nothing, put NULL |
---|
| 112 | if ($str eq "") { |
---|
| 113 | printf("NULL%s", $suffix); |
---|
| 114 | } else { |
---|
| 115 | my $flag = 0; |
---|
| 116 | # Search if it's a string column ? |
---|
| 117 | foreach $col (@str_col) |
---|
| 118 | { |
---|
| 119 | if ($col == $idCol) |
---|
| 120 | { |
---|
| 121 | $flag = 1; |
---|
| 122 | break; |
---|
| 123 | } |
---|
| 124 | } |
---|
| 125 | if ($flag == 1) |
---|
| 126 | { |
---|
| 127 | # String column, so escape and add '' |
---|
| 128 | printf("'%s'%s", escape($str), $suffix); |
---|
| 129 | } else { |
---|
| 130 | # Not a string column |
---|
| 131 | printf("%s%s", $str,$suffix); |
---|
| 132 | } |
---|
| 133 | } |
---|
| 134 | } |
---|
| 135 | |
---|
| 136 | sub escape { |
---|
| 137 | my ($str) = @_; |
---|
| 138 | my @str_splitted = split("'", $str); |
---|
| 139 | my $result = ""; |
---|
| 140 | for (my $i=0; $i<=$#str_splitted; $i++) |
---|
| 141 | { |
---|
| 142 | if ($i == 0) { |
---|
| 143 | $result = @str_splitted[0]; |
---|
| 144 | } else { |
---|
| 145 | $result = $result."\\'".@str_splitted[$i]; |
---|
| 146 | } |
---|
| 147 | } |
---|
| 148 | return $result |
---|
| 149 | } |
---|