मेरे पास एक डेटाबेस है जो डिफ़ॉल्ट वर्ण सेट SQL_ASCII के साथ स्थापित किया गया था। मैं इसे यूनिकोड में स्विच करना चाहता हूं। क्या ऐसा करने का कोई आसान तरीका है?आप पोस्टग्रेज़ डेटाबेस के वर्ण एन्कोडिंग को कैसे बदलते हैं?
उत्तर
अपने डेटाबेस की एन्कोडिंग बदलने के लिए:
- अपने डेटाबेस डंप
- अपने डेटाबेस को छोड़ना,
- अलग एन्कोडिंग
- अपने डेटा को पुनः लोड के साथ नए डेटाबेस बनाएँ।
यकीन है कि ग्राहक एन्कोडिंग यह सब के दौरान सही ढंग से सेट है।
स्रोत: http://archives.postgresql.org/pgsql-novice/2006-03/msg00210.php
बात मैं लिंक से नहीं मिलता है पर "जाँच करें कि डंप पहला कदम में बनाई गई फ़ाइल कोई विशेष वर्ण है और आवश्यक परिवर्तन कर" है => मैं मैन्युअल रूप से सभी विशेष चा बदलने के लिए है racters – spankmaster79
पहले, डैनियल जवाब सही, सुरक्षित विकल्प है।
SQL_ASCII से कुछ और करने के लिए बदलने की विशेष मामले के लिए, आप को धोखा देने के कर सकते हैं और बस डेटाबेस एन्कोडिंग पुन: असाइन करने pg_database सूची प्रहार। यह मानता है कि आपने अपेक्षित एन्कोडिंग में किसी भी गैर-ASCII वर्णों को पहले ही संग्रहीत कर लिया है (या आपने अभी तक किसी भी गैर-ASCII वर्णों का उपयोग नहीं किया है)।
तो फिर तुम कर सकते हैं:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
इस डेटाबेस का मिलान नहीं बदलेगा, कितना एन्कोडेड बाइट्स पात्रों में बदला जाता है (तो अब length('£123')
4 के बजाय 5 वापस आ जाएगी)। यदि डेटाबेस 'सी' संयोजन का उपयोग करता है, तो ASCII स्ट्रिंग के लिए ऑर्डर करने में कोई बदलाव नहीं होना चाहिए। आपको संभवतः गैर-ASCII वर्ण वाले किसी भी सूचकांक को पुनर्निर्माण करने की आवश्यकता होगी।
कैविट एम्प्टर। डंपिंग और रीलोडिंग आपके डेटाबेस की सामग्री को जांचने का एक तरीका प्रदान करता है वास्तव में आपके द्वारा अपेक्षित एन्कोडिंग में होता है, और ऐसा नहीं होता है। और यदि यह पता चला है कि आपके पास डेटाबेस में कुछ गलत तरीके से एन्कोड किए गए डेटा हैं, तो बचाव करना कठिन होगा। तो यदि आप संभवतः, डंप और पुन: प्रारंभ कर सकते हैं।
+1 धन्यवाद। मेरी देव मशीन यूटीएफ 8 एन्कॉन्डिंग का उपयोग करती है लेकिन मेरा उत्पादन LATIN1 का उपयोग करता है। इस वजह से मुझे बहुत सारे इरॉस मिल रहे थे। –
यह मुझे इस त्रुटि दे रहा है: '-bash: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि' (' ' –
एक विशिष्ट एन्कोडिंग के साथ एक डेटाबेस डम्पिंग और एक अलग एन्कोडिंग डेटा भ्रष्टाचार में परिणाम सकता है के साथ एक और डेटाबेस पर इसे फिर से स्थापित करने के लिए प्रयास करें। किसी भी डेटा को डेटाबेस में डालने से पहले डेटा एन्कोडिंग सेट की जानी चाहिए।
चेक this: जब किसी अन्य डेटाबेस को कॉपी, एन्कोडिंग और स्थान सेटिंग्स स्रोत डेटाबेस के उन लोगों से, बदला नहीं जा सकता, क्योंकि वह भ्रष्ट डेटा हो सकती है।
और this: कुछ लोकेल श्रेणियों उनके मूल्यों जब डेटाबेस बनाई गई है तय कर दी है चाहिए। आप अलग-अलग डेटाबेस के लिए अलग-अलग सेटिंग्स का उपयोग कर सकते हैं, लेकिन डेटाबेस बनने के बाद, आप उन्हें उस डेटाबेस के लिए और नहीं बदल सकते हैं। एलसी_Cओएलएलएटी और एलसी_सीटीवाईईई इन श्रेणियां हैं। वे इंडेक्स के सॉर्ट ऑर्डर को प्रभावित करते हैं, इसलिए उन्हें निश्चित रखा जाना चाहिए, या टेक्स्ट कॉलम पर इंडेक्स भ्रष्ट हो जाएंगे। (लेकिन धारा 22.2।) पर चर्चा के अनुसार आप कोलेक्शन का उपयोग करके इस प्रतिबंध को कम कर सकते हैं। इन श्रेणियों के लिए डिफ़ॉल्ट मान निर्धारित किए जाते हैं जब initdb चलाया जाता है, और उन मानों का उपयोग तब किया जाता है जब नए डेटाबेस बनाए जाते हैं, जब तक कि अन्यथा निर्दिष्ट नहीं किया जाता डाटाबेस कमांड बनाएं।
मैं नहीं बल्कि के रूप में समझाया here ठीक से अपने डेबियन ओएस पर एक सही स्थानीय एन्कोडिंग के साथ शुरुआत से सब कुछ फिर से बनाना होगा:
su root
पुनः कॉन्फ़िगर अपने स्थानीय सेटिंग्स:
dpkg-reconfigure locales
चुनें अपने स्थान (स्विट्जरलैंड में फ्रेंच के लिए उदाहरण के लिए की तरह: fr_CH.UTF8)
,210स्थापना रद्द करें और साफ ठीक से PostgreSQL:
apt-get --purge remove postgresql\*
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres
को पुन: इंस्टॉल PostgreSQL:
aptitude install postgresql-9.1 postgresql-contrib-9.1 postgresql-doc-9.1
अब किसी भी नए डेटाबेस स्वचालित रूप से सही एन्कोडिंग, LC_TYPE (चरित्र वर्गीकरण), और LC_COLLATE (के साथ बनाया जा किया जाएगा स्ट्रिंग सॉर्ट ऑर्डर)।
डैनियल Kutik के जवाब सही है, लेकिन यह डेटाबेस का नाम बदलने साथ और भी अधिक सुरक्षित हो सकता है।
तो, सही मायने में सुरक्षित तरीका है:
- विभिन्न एन्कोडिंग और नाम
- साथ नए डेटाबेस बनाने के लिए अपने डेटाबेस डंप
- नई डीबी को डंप पुनर्स्थापित
- परीक्षण करें कि आपके आवेदन रन सही ढंग से नए डीबी
- पुराने डीबी का नाम कुछ सार्थक
- नया डीबी का नाम बदलें
- टेस्ट आवेदन फिर से
- ड्रॉप पुराने डेटाबेस
आपात स्थिति के मामले में, बस डीबीएस नाम बदलने वापस
- 1. एसक्यूएल में डेटाबेस के मालिक को आप कैसे बदलते हैं?
- 2. पोस्टग्रेज़ डेटाबेस
- 3. आप एक मोंगोडीबी डेटाबेस का नाम कैसे बदलते हैं?
- 4. डेटाबेस, वर्ण एन्कोडिंग, पीडीएफ और एक्सएमएल
- 5. आप मोंगोस दस्तावेज़ को सादा वस्तु में कैसे बदलते हैं?
- 6. वर्ण एन्कोडिंग
- 7. आप ActiveAdmin पासवर्ड कैसे बदलते हैं?
- 8. नेटटीसीपी के लिए आप प्रोग्रामिंग रूप से डब्लूसीएफ संदेश एन्कोडिंग कैसे बदलते हैं?
- 9. नियमित पोस्टग्रेज़ डेटाबेस को एक स्थानिक डेटाबेस
- 10. आप यूआईएफओटी का रंग कैसे बदलते हैं?
- 11. हेरोकू पोस्टग्रेज़ डेटाबेस
- 12. आप अपने रेल ऐप डेटा को कैसे बदलते हैं?
- 13. आप जावास्क्रिप्ट में पाउंड (मुद्रा) साइन को कैसे बदलते हैं?
- 14. आप दस्तावेज़ को विंडो में कैसे बदलते हैं?
- 15. आप लिंक क्वेरी परिणाम को एक्सएमएल में कैसे बदलते हैं?
- 16. यूआरएल यूनिकोड वर्ण एन्कोडिंग
- 17. खाका टूलकिट वर्ण एन्कोडिंग
- 18. JSON वर्ण एन्कोडिंग
- 19. आप jqgrid के लिए कॉलम सॉर्ट आइकन कैसे बदलते हैं?
- 20. JSoup वर्ण एन्कोडिंग समस्या
- 21. एंड्रॉइड डिफ़ॉल्ट वर्ण एन्कोडिंग
- 22. MySQL डेटाबेस में फ्रेंच वर्ण
- 23. पोस्टग्रेज़ में डेटाबेस कॉपी करें
- 24. यूनिकोड वर्ण डेटाबेस
- 25. स्प्रिंग/बाकी @PathVariable वर्ण एन्कोडिंग
- 26. पोस्टग्रेज़ पर सभी डेटाबेस कैसे हटाएं?
- 27. परिवर्तनीय नाम और वर्ण एन्कोडिंग
- 28. मैं शैल स्क्रिप्ट्स वर्ण एन्कोडिंग कैसे बदलूं?
- 29. आप डेटाबेस के कई संस्करणों को कैसे बनाए रखते हैं?
- 30. IE8 देशी जेसन में वर्ण एन्कोडिंग को कैसे सही करें?
भी देखें http://stackoverflow.com/q/380924 की – dsh
संभव डुप्लिकेट [कैसे कर सकते हैं मैं एसक्यूएल या phpPgAdmin का उपयोग कर एक PostgreSQL डेटाबेस के लिए डेटाबेस एन्कोडिंग बदलने के?] (http://stackoverflow.com/questions/380924/how-can-i-change-database-encoding-for-a-postgresql-database-using-sql -या-phppga) – l0b0