Skip to main content

how to excute a .sql file through php

<?php
ini_set(‘memory_limit’, ’5120M’);
set_time_limit ( 0 );
/***************************************************************************
*                             sql_parse.php
*                              ——————-
*     begin                : Thu May 31, 2001
*     copyright            : (C) 2001 The phpBB Group
*     email                : support@phpbb.com
*
*     $Id: sql_parse.php,v 1.8 2002/03/18 23:53:12 psotfx Exp $
*
****************************************************************************/
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/
/***************************************************************************
*
*   These functions are mainly for use in the db_utilities under the admin
*   however in order to make these functions available elsewhere, specifically
*   in the installation phase of phpBB I have seperated out a couple of
*   functions into this file.  JLH
*
\***************************************************************************/
//
// remove_comments will strip the sql comment lines out of an uploaded sql file
// specifically for mssql and postgres type files in the install….
//
function remove_comments(&$output)
{
   $lines = explode(“\n”, $output);
   $output = “”;
   // try to keep mem. use down
   $linecount = count($lines);
   $in_comment = false;
   for($i = 0; $i < $linecount; $i++)
   {
      if( preg_match(“/^\/\*/”, preg_quote($lines[$i])) )
      {
         $in_comment = true;
      }
      if( !$in_comment )
      {
         $output .= $lines[$i] . “\n”;
      }
      if( preg_match(“/\*\/$/”, preg_quote($lines[$i])) )
      {
         $in_comment = false;
      }
   }
   unset($lines);
   return $output;
}
//
// remove_remarks will strip the sql comment lines out of an uploaded sql file
//
function remove_remarks($sql)
{
   $lines = explode(“\n”, $sql);
   // try to keep mem. use down
   $sql = “”;
   $linecount = count($lines);
   $output = “”;
   for ($i = 0; $i < $linecount; $i++)
   {
      if (($i != ($linecount – 1)) || (strlen($lines[$i]) > 0))
      {
         if (isset($lines[$i][0]) && $lines[$i][0] != “#”)
         {
            $output .= $lines[$i] . “\n”;
         }
         else
         {
            $output .= “\n”;
         }
         // Trading a bit of speed for lower mem. use here.
         $lines[$i] = “”;
      }
   }
   return $output;
}
//
// split_sql_file will split an uploaded sql file into single sql statements.
// Note: expects trim() to have already been run on $sql.
//
function split_sql_file($sql, $delimiter)
{
   // Split up our string into “possible” SQL statements.
   $tokens = explode($delimiter, $sql);
   // try to save mem.
   $sql = “”;
   $output = array();
   // we don’t actually care about the matches preg gives us.
   $matches = array();
   // this is faster than calling count($oktens) every time thru the loop.
   $token_count = count($tokens);
   for ($i = 0; $i < $token_count; $i++)
   {
      // Don’t wanna add an empty string as the last thing in the array.
      if (($i != ($token_count – 1)) || (strlen($tokens[$i] > 0)))
      {
         // This is the total number of single quotes in the token.
         $total_quotes = preg_match_all(“/’/”, $tokens[$i], $matches);
         // Counts single quotes that are preceded by an odd number of backslashes,
         // which means they’re escaped quotes.
         $escaped_quotes = preg_match_all(“/(?<!\\\\)(\\\\\\\\)*\\\\’/“, $tokens[$i], $matches);
         $unescaped_quotes = $total_quotes – $escaped_quotes;
         // If the number of unescaped quotes is even, then the delimiter did NOT occur inside a string literal.
         if (($unescaped_quotes % 2) == 0)
         {
            // It’s a complete sql statement.
            $output[] = $tokens[$i];
            // save memory.
            $tokens[$i] = “”;
         }
         else
         {
            // incomplete sql statement. keep adding tokens until we have a complete one.
            // $temp will hold what we have so far.
            $temp = $tokens[$i] . $delimiter;
            // save memory..
            $tokens[$i] = “”;
            // Do we have a complete statement yet?
            $complete_stmt = false;
            for ($j = $i + 1; (!$complete_stmt && ($j < $token_count)); $j++)
            {
               // This is the total number of single quotes in the token.
               $total_quotes = preg_match_all(“/’/”, $tokens[$j], $matches);
               // Counts single quotes that are preceded by an odd number of backslashes,
               // which means they’re escaped quotes.
               $escaped_quotes = preg_match_all(“/(?<!\\\\)(\\\\\\\\)*\\\\’/“, $tokens[$j], $matches);
               $unescaped_quotes = $total_quotes – $escaped_quotes;
               if (($unescaped_quotes % 2) == 1)
               {
                  // odd number of unescaped quotes. In combination with the previous incomplete
                  // statement(s), we now have a complete statement. (2 odds always make an even)
                  $output[] = $temp . $tokens[$j];
                  // save memory.
                  $tokens[$j] = “”;
                  $temp = “”;
                  // exit the loop.
                  $complete_stmt = true;
                  // make sure the outer loop continues at the right point.
                  $i = $j;
               }
               else
               {
                  // even number of unescaped quotes. We still don’t have a complete statement.
                  // (1 odd and 1 even always make an odd)
                  $temp .= $tokens[$j] . $delimiter;
                  // save memory.
                  $tokens[$j] = “”;
               }
            } // for..
         } // else
      }
   }
   return $output;
}
$dbms_schema = <database_path/database_name.sql>’;
$sql_query = @fread(@fopen($dbms_schema, ‘r’), @filesize($dbms_schema)) or die(‘problem ‘);
$sql_query = remove_remarks($sql_query);
$sql_query = split_sql_file($sql_query, ‘;’);
$host = ‘localhost’;
$user = ‘<username>’;
$pass = ”<passoword>”;
$db = ‘<database_name>’;
mysql_connect($host,$user,$pass) or die(‘error connection’);
mysql_select_db($db) or die(‘error database selection’);
$i=1;
foreach($sql_query as $sql){
echo $i++;
echo “
“;
mysql_query($sql) or die(‘error in query’);
}
?>

Comments

Popular posts from this blog

Difference between session.gc_maxlifetime and session.cookie_lifetime in Drupal setting.php

ini_set('session.gc_maxlifetime', 200000); This value is for the server. It is a settings for Session Garbage Collection. If the users last visit happened before 200000s then this session is eligible for garbage collection. Since it is GC, the session value may be discarded and not compulsory. If a GC action happens after the session was made eligible for the GC, it will be deleted. ini_set ( 'session.cookie_lifetime' , 2000000 ); This value is for the browser. This is the absolute maximum time till which a browser can keep this cookie active. A 0 value here means immediate or when the browser is closed. Source: 

CKFinder Installation in the CKEditor for Drupal 7 Module

Please follow the steps below;  Go to http://ckfinder.com/download and download CKfinder Unpack the contents of the installation package into the directory that contains the CKEditor module and place it in thesites/all/modules/ckeditor/ckfinder (or sites/all/libraries/ckfinder) folder. . When the files are unpacked, you should see the following file structure inside the drupal/sites/all/modules directory: Now open the CKFinder configuration file (ckfinder/config.php) and introduce the code changes described below. Firstly, remove the CheckAuthentication() function (do not worry, this function is defined in filemanager.config.php, see below): function CheckAuthentication()       <- remove it {                                    <- remove it    //WARNING : DO NOT simply...      <- remove it    ...                               <- remove it    return false;                     <- remove it } For CKFinder installed in the sites/all/modules/ckeditor/ckfinder

Smart pagination or page break in Drupal 7(CK editor)

1. Install Smart Paging module   Go to Administration › Configuration › Administer Smart Paging settings.   Under 'Default page break method', select "Manual placement of page break placeholder". 2.  Install  'Ckeditor' Module   Go to Administration › Configuration > Ckediotr profiles > Filtered HTML   Edit the settings of the Advanced (Filtered HTML) Profile. Under 'Editor Appearance' section, In plugins check the required options like " Plugin for inserting a Drupal teaser and page breaks. ". 3.  Edit the configuration settings of input formats (Filtered HTML, Full HTML, Plain Text)   Go to Administration › Configuration > Text formats. Edit the required input format. For example say "Filtered HTML". Under  "Enabled filters" section, check the 'Smart Paging' option and uncheck all the remaining checkboxes. 4. Go to Content type 'article' and create new content. We will s