OSDN Git Service

utils/db_script/create_tables.pl: support data insertion
authorhylom <hylom@users.sourceforge.jp>
Fri, 7 Oct 2016 13:09:15 +0000 (22:09 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 7 Oct 2016 13:09:15 +0000 (22:09 +0900)
src/utils/db_scripts/create_tables.pl

index 6e6eb73..20bc6b3 100755 (executable)
@@ -12,6 +12,7 @@ use File::Spec;
 my $PROGNAME = basename($0);
 my $VERSION = '0.1.0';
 my $SQL_DIR = './sqls';
+my $DATA_DIR = './data';
 
 sub recreate_database {
     my $opts = shift;
@@ -67,42 +68,53 @@ sub main {
   if (!$dbh) {
     usage('cannot connect to database.');
   }
+  print "create databases...\n";
+  exec_sql($dbh, $SQL_DIR);
 
-  opendir(my $dh, $SQL_DIR) || die "cannot opendir $SQL_DIR: $!\n";
-  while(my $fname = readdir $dh) {
-    if ($fname =~ m/^\./) {
-        next;
-    }
-    if ($fname =~ m/^.*\.sql$/) {
-      print "execute $fname...\n";
-      my $sql = get_sql_contents($fname);
-      my $sth = $dbh->prepare($sql);
-      my $result = $sth->execute;
-      if (!$result) {
-       print "sql execute error: $!\n";
-      }
-      $sth->finish;
-    }
-  }
+  print "insert datas...\n";
+  exec_sql($dbh, $DATA_DIR);
 
   $dbh->disconnect();
   print "done.\n";
 }
 
+sub exec_sql {
+    my $dbh = shift;
+    my $target = shift;
+
+    opendir(my $dh, $target) || die "cannot opendir $target: $!\n";
+    while(my $fname = readdir $dh) {
+        if ($fname =~ m/^\./) {
+            next;
+        }
+        if ($fname =~ m/^.*\.sql$/) {
+            print "execute $fname...\n";
+            my $sql = get_sql_contents($target, $fname);
+            # my $sth = $dbh->prepare($sql);
+            # my $result = $sth->execute;
+            my $result = $dbh->do($sql);
+            if (!$result) {
+                print "sql execute error: $!\n";
+            }
+        }
+    }
+}
+
 
 sub get_sql_contents {
-  my $fname = shift @_;
+    my $dirname = shift @_;
+    my $fname = shift @_;
 
-  my $pathname = File::Spec->catfile($SQL_DIR, $fname);
-  my $fh;
+    my $pathname = File::Spec->catfile($dirname, $fname);
+    my $fh;
 
-  if (!open($fh, '<', $pathname)) {
-    print "cannot open $fh: $!\n";
-    return;
-  }
+    if (!open($fh, '<', $pathname)) {
+        print "cannot open $fh: $!\n";
+        return;
+    }
 
-  my $sql = do { local $/; <$fh> };
-  return $sql;
+    my $sql = do { local $/; <$fh> };
+    return $sql;
 }