आयात करने के लिए OpenRowSet का उपयोग करते समय वैज्ञानिक नोटेशन को फ़्लोट करने के लिए कनवर्ट करें I SQL सर्वर में एक csv फ़ाइल आयात करने के लिए openrowset का उपयोग कर रहा हूं। सीएसवी फ़ाइल में कॉलम में से एक में वैज्ञानिक नोटेशन (1.08 ई + 05) और तालिका में कॉलम डाला जा रहा है जिसमेंएक सीएसवी फ़ाइल
डिफ़ॉल्ट रूप से यह 1 के रूप में मान आयात कर रहा है और .08E + 05 को अनदेखा कर रहा है।
मैंने क्वेरी निष्पादित होने पर सीधे मूल्य को रूपांतरित करने के साथ-साथ वर्ण स्ट्रिंग के रूप में तालिका में डेटाटाइप सेट करने और इसे आयात करने के लिए कास्ट() और कन्वर्ट() का उपयोग करने का प्रयास किया है। इन सभी विधियों में वही व्यवहार है जहां .08 ई + 05 को अनदेखा किया जाता है।
क्या सीएसवी फ़ाइल को बदलने के बिना .08E + 05 के बिना 1 के बजाय 108000 के रूप में आयात करने का कोई तरीका है? नहीं और CSV फ़ाइल में सभी मान वैज्ञानिक संकेतन है
CREATE TABLE #dataTemp (StartDate datetime, Value varchar(12))
SET @insertDataQuery = 'SELECT Date, CSVValue from OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir='
SET @insertDataQuery = @insertDataQuery + 'C:\Data\;'',''SELECT * FROM '+ '11091800.csv' + ''')'
INSERT INTO #dataTemp EXEC(@insertDataQuery)
SELECT * FROM #dataTemp
:
एक varchar के रूप में डेटाप्रकार की स्थापना और csv फ़ाइल में पढ़ने के लिए निम्न कोड के साथ एक ही प्रभाव है प्रतीत होता है इसके बिना मूल्य, उदाहरण के लिए 81000 बिना किसी मुद्दे के आते हैं।
सवाल आप शायद अभी उपयोग कर सकते हैं 'बदलें चुनें (INT है कि मैं कर रहा हूँ फिर से पढ़ने:
दूसरा, यहाँ एक बेहतर परिवर्तित piefce कि एक स्ट्रिंग को संख्या में कनवर्ट करता है , कन्वर्ट (फ्लोट, '1।08E + 05 '));' - आखिरी बार मैंने वैज्ञानिक नोटेशन पर काम किया था, मैं लॉगमेन से प्रदर्शन काउंटर से निपट रहा था, और मुझे निश्चित रूप से दशमलव स्थानों की आवश्यकता थी ... –
उपरोक्त में से कोई भी समाधान काम करता है अगर मैं स्पष्ट रूप से मूल्य की आपूर्ति करता हूं। सीएसवी फ़ाइल में मेरे पास मान के लिए कॉलम नाम है और यदि मैं इसका उपयोग करता हूं, उदाहरण के लिए CONVERT (INT, CONVERT (FLOAT, COLUMN_NAME_IN_CSV)) मुझे अभी भी वह व्यवहार मिलता है जहां यह केवल पहले अंक को पढ़ता है। विचार? – amarcy
मेरे विचार अभी भी वर्चर्स की एक तालिका में थोक डालने के लिए हैं। आपके सम्मिलित होने पर कुछ और हो रहा है ... openrowset क्वेरी से चुनें क्वेरी प्रकार से मेटाडेटा से तालिका प्रकारों से मिलान करने का प्रयास कर रहा है। यदि आप पहले वर्चर में डाल रहे हैं, तो यह परवाह नहीं करेगा ... –