2010-01-27 10 views
6

मुझे अपने संबंधित अक्षांश/अक्षांश के साथ शहर के नामों का एक डेटासेट मिला है जिसे मैंने एक MySQL तालिका में लोड किया है, जैसे:अक्षांश/देशांतर डेटा को MySQL में सही तरीके से आयात करने के लिए कैसे करें?

city_id | city_name | अक्षांश डेसिमल (9,6) | देशांतर DECIMAL (9,6)

विशिष्ट अक्षांश/देशांतर निर्देशांक इस तरह दिख सकते हैं: 54.284758/32.484736।

हालांकि, मुझे केवल मेरी तालिका में सही ढंग से दिखाई देने के लिए 2 के पैमाने के साथ मूल्य मिल रहा है, दूसरे शब्दों में, DECIMAL (5,2) के बराबर। डेटा को एक टेक्स्ट सीएसवी से अपलोड किया गया है जिसे यूटीएफ -8 प्रयोजनों के लिए ओपनऑफिस कैल्क से निर्यात किया गया है। मुझे पता है कि ओपनऑफिस में दशमलव के साथ कुछ समस्याएं हैं लेकिन पूर्ण अक्षांश/रेखांश निश्चित रूप से निर्यातित सीएसवी में हैं। अगर मैं नोटपैड के साथ सीएसवी खोलता हूं, तो डेटा ठीक है।

क्या कोई देख सकता है कि मैं गलत क्या कर सकता हूं?

धन्यवाद।

अद्यतन: सभी इनपुट के लिए धन्यवाद, यह काम कर रहा है। मैंने स्क्रैच से सब कुछ बनाया, नई स्कीमा फ़ाइल (मैं एक ओआरएम का उपयोग कर रहा हूं), नया सीएसवी निर्यात, नई टेबल, नया लोड डेटा इन्फाइल, और यह सही दशमलव आउटपुट के साथ काम करता है। मुझे पता नहीं।

+0

जब आप अपनी तालिका में "गलत" कहते हैं, तो क्या आपका मतलब है जब आप MySQL प्रॉम्प्ट पर "SELECT * से Mytable" टाइप करते हैं? या आपके पास दर्शक है? – Tenner

+0

@ टेंनर .... मैं MySQL वर्कबेंच का उपयोग कर रहा हूं, लेकिन जब मैं PHP के माध्यम से समन्वय खींचता हूं तो परिणाम वही होता है। – Tom

+0

डेटा प्रकारों को 'DECIMAL (9,6) 'दिया गया है, और जब आप इसे नोटपैड में देखते हैं तो सीएसवी सही है - डेटा आयात करने के लिए आप जो कुछ भी उपयोग कर रहे हैं उसके साथ कुछ है। यदि आप जो भी समस्या उठा रहे हैं, उसे छोड़कर MySQL लोड डेटा INFILE का उपयोग करने पर एक नज़र डालें: http://dev.mysql.com/doc/refman/5.1/en/load-data.html –

उत्तर

5

यह आपकी आवश्यकताओं के लिए अधिक हो सकता है, लेकिन भौगोलिक डेटा काम करते समय आप MySQL Spatial Extensions का उपयोग करने पर विचार करना चाह सकते हैं।

मैं जोड़ता हूं कि आप जिस डेटाटाइप का उपयोग कर रहे हैं वह डेटा का प्रतिनिधित्व करने के लिए पर्याप्त है क्योंकि यह आपकी सीएसवी फ़ाइल में है। आपके आयातक में कुछ ऐसा है जो इसे आयात समय पर बंद कर रहा है, या जो भी आप डेटा देखने के लिए उपयोग कर रहे हैं उसे कम कर रहा है।

+0

धन्यवाद, पहले एक नजर थी ..... यह थोड़ा अधिक है :) – Tom

1

मैं लैट, लांग को संग्रहीत करने के लिए वर्कर जैसे स्ट्रिंग डेटा प्रकार का उपयोग करने का सुझाव दूंगा। मैं ऐसे ऐप पर काम कर रहा हूं जो इन निर्देशांकों का व्यापक उपयोग करता है और मैंने स्ट्रिंग के रूप में इसे संग्रहीत करने में किसी भी समस्या का सामना नहीं किया है। इसे एक संख्या के रूप में संग्रहीत करना आप सटीक मुद्दों में भाग लेंगे।

बस कुछ विचार करने के लिए।

+0

धन्यवाद लुकाज़। सटीक मुद्दों से आपका क्या मतलब था? मैं डेटा का बहुत सख्त तरीके से उपयोग नहीं करूँगा। केवल कुछ Google मानचित्र निर्देशांक और उसके ऊपर मिनी-ऐप्स उत्पन्न करने के लिए। मैंने सोचा होगा कि 6 का स्तर काफी सटीक है? – Tom

+2

आप कैसे क्रमबद्ध करते हैं? या त्रिज्या के भीतर खोज? ऐसा लगता है कि तारों के रूप में ये स्टोर करना बहुत अनावश्यक रन-टाइम कास्टिंग होगा। – Tenner

+0

प्रेसिजन बुद्धिमान मैं एक स्ट्रिंग या एक बड़े पर्याप्त दशमलव का उपयोग करने की सिफारिश करता हूं। उदाहरण के लिए फ्लोट का उपयोग करके निम्नलिखित हो सकता है।मेरे पास यह समन्वय है जो बिंग मैप्स से लौटाया गया था, 43.371240452765925 उस मूल्य को 43.3712404527659 में फ्लोट परिणामों के रूप में संग्रहीत किया गया था। यह एक बड़ी त्रुटि नहीं है लेकिन यह एक त्रुटि है। सॉर्टिंग के लिए, टी-एसक्यूएल लेक्सिकोग्राफिक ऑर्डर का उपयोग करता है जिसका अर्थ है कि स्ट्रिंग और संख्याओं को इसी तरह से क्रमबद्ध किया जाएगा, इसलिए कलाकारों को डालने की कोई आवश्यकता नहीं है। – Lukasz

0

आप अपने MySQL तालिका में टाइप डबिल के रूप में फ़ील्ड क्यों घोषित नहीं करते हैं? दशमलव बिंदु के बाद अंकों और अंकों की संख्या के लिए योग्यता वैकल्पिक हैं।

+0

धन्यवाद, एक पल में कोशिश करेंगे, लेकिन MySQL मैनुअल की तरह कहता है, सही सटीक आवश्यकता होने पर डबल/फ़्लोट सही प्रारूप नहीं है, जबकि डेसिमल है। – Tom

संबंधित मुद्दे