كيف يمكنني تغيير ترميز قاعدة البيانات على الإنترنت قاعدة بيانات باستخدام sql أو phpPgAdmin?

StackOverflow https://stackoverflow.com/questions/380924

  •  22-08-2019
  •  | 
  •  

سؤال

كيف يمكنني تغيير ترميز قاعدة البيانات على الإنترنت قاعدة بيانات باستخدام sql أو phpPgAdmin?

هل كانت مفيدة؟

المحلول

باختصار, لا يمكنك أن تفعل هذا مع فقط phpPgAdmin أو SQL دون المخاطرة البيانات الموجودة الفساد.عليك أن تصدير جميع البيانات, إنشاء قاعدة بيانات مع الترميز الصحيح واستعادة البيانات التي تم تصديرها.

هذا كيف يمكنك أن يمضي:

  1. إنشاء تفريغ قاعدة البيانات:

    pg_dump your_database > your_database.sql

    هذا سيوفر قاعدة البيانات في sql في تنسيق ترميز لديك حاليا.

  2. حذف قاعدة البيانات (أو إعادة تسميته):

    DROP DATABASE your_database

    إذا كان لديك مساحة تخزين كافية للقيام بذلك أوصي ترك قاعدة البيانات القديمة حتى تأكد من أن كل شيء على ما يرام مع واحدة جديدة ، إعادة تسمية ذلك:

    ALTER DATABASE your_database RENAME TO your_database_backup;

  3. إنشاء قاعدة بيانات مع الترميز الجديد:

    CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;

  4. استيراد البيانات من تفريغ إنشاؤه من قبل:

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

    تحتاج إلى تعيين psql العميل ترميز واحد في قاعدة البيانات القديمة.

تغيير ترميز على ذبابة ليس من الممكن كما أنه يحتاج إلى إعادة كتابة معظم الداخلي بيانات قاعدة البيانات وهو ما يعادل تقريبا إلى إعادة db الطريقة التي وصفتها.

فمن الممكن أن مجرد تغيير الداخلية بوستجرس المعلومات حول قاعدة بيانات أي بيانات جديدة بعد هذا التغيير سوف يتم حفظها بشكل صحيح, ومع ذلك البيانات الموجودة قد تلف.

نصائح أخرى

ويمكنك تغيير الترميز على الطاير من دون تفريغ / الاستعادة:

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'database_name'

لتوسيع على إجابات معينة، يمكنك استخدام هذه الأوامر لإنجاز مهمتك.

// Backup the database to outfile
pg_dump dbname > outfile

// Terminate all connections to the database
psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='dbname';"

// Delete the database
psql -c "DROP DATABASE dbname;"

//Re-create the database using the encoding keyword
psql -c "CREATE DATABASE dbname ENCODING='UTF8';"

//Import the saved data
psql -f outfile

وقاعدة بيانات الإغراق: http://www.postgresql.org/docs /9.4/static/backup-dump.html

وإنشاء قاعدة البيانات: http://www.postgresql.org/docs /9.4/static/sql-createdatabase.html

وهذه هي قائمة من جميع ترميزات المتاحة للإصدار 9.4: http://www.postgresql.org/docs/9.4 /static/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top