Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सर्वोत्तम अभ्यास:PHP में mySQL फ़ाइल आयात करें; विभाजित प्रश्न

यहां एक मेमोरी-फ्रेंडली फ़ंक्शन है जो एक बड़ी फ़ाइल को अलग-अलग क्वेरी में विभाजित करने में सक्षम होना चाहिए, बिना पूरी फ़ाइल को एक साथ खोलने की आवश्यकता के :

function SplitSQL($file, $delimiter = ';')
{
    set_time_limit(0);

    if (is_file($file) === true)
    {
        $file = fopen($file, 'r');

        if (is_resource($file) === true)
        {
            $query = array();

            while (feof($file) === false)
            {
                $query[] = fgets($file);

                if (preg_match('~' . preg_quote($delimiter, '~') . '\s*$~iS', end($query)) === 1)
                {
                    $query = trim(implode('', $query));

                    if (mysql_query($query) === false)
                    {
                        echo '<h3>ERROR: ' . $query . '</h3>' . "\n";
                    }

                    else
                    {
                        echo '<h3>SUCCESS: ' . $query . '</h3>' . "\n";
                    }

                    while (ob_get_level() > 0)
                    {
                        ob_end_flush();
                    }

                    flush();
                }

                if (is_string($query) === true)
                {
                    $query = array();
                }
            }

            return fclose($file);
        }
    }

    return false;
}

मैंने इसे एक बड़े phpMyAdmin SQL डंप पर परीक्षण किया और इसने ठीक काम किया।

कुछ परीक्षण डेटा:

CREATE TABLE IF NOT EXISTS "test" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT,
    "name" TEXT,
    "description" TEXT
);

BEGIN;
    INSERT INTO "test" ("name", "description")
    VALUES (";;;", "something for you mind; body; soul");
COMMIT;

UPDATE "test"
    SET "name" = "; "
    WHERE "id" = 1;

और संबंधित आउटपुट:

SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT );
SUCCESS: BEGIN;
SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul");
SUCCESS: COMMIT;
SUCCESS: UPDATE "test" SET "name" = "; " WHERE "id" = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gentoo पर MySQL रिलेशनल डेटाबेस का उपयोग करना

  2. MySQL में सोशल नेटवर्क सिस्टम के लिए डेटाबेस डिजाइन करने के लिए गाइड

  3. मैं किसी तालिका या स्तंभ की सभी विदेशी कुंजियाँ कैसे देखूँ?

  4. MySQL मास्टर टू मास्टर प्रतिकृति

  5. MySQL में तारीखों के बीच महीनों का अंतर