2012-07-13 11 views
5

मैं मैक चलाना हिम तेंदुए पर एक फ़ाइल में एक MySQL चयन कथन से कुछ डेटा लिखने की कोशिश कर रहा हूं।ओएसएक्स पर MySQL डिफ़ॉल्ट रूप से आउटफाइल कहां लिखता है?

select date_base, fractile_v2, gics, count(gvkey_iid) 
from master 
where fractile_v2 <= 15 and 
     fractile_v2 != 0 
group by date_base, gics, fractile_v2 
order by date_base, fractile_v2 
limit 100000 
INTO OUTFILE '/User/my-name/Desktop/gics_v2.csv' 
FIELDS TERMINATED BY ','; 

दुर्भाग्य से यह निम्न त्रुटि उत्पन्न करता है:

Error Code: 1. Can't create/write to file '/Users/andrew/Desktop/gics_v2.csv' (Errcode: 13)

जो मैं कर रहा हूँ यह सोचते हैं एक अनुमतियाँ मुद्दा है।

जब मैं केवल gics_v2.csv के साथ पूर्ण फ़ाइल पथ '/User/my-name/Desktop/gics_v2.csv' को प्रतिस्थापित करता हूं तो कथन चलते हैं। हालांकि मुझे नहीं पता कि फ़ाइल कहां से सहेजी गई है और मुझे यह नहीं मिल रहा है।

क्या किसी को पता है? और क्या कोई यह भी सुझाव दे सकता है कि मैं प्रारंभिक लेखन त्रुटि को कैसे हल कर सकता हूं? मैं रूट उपयोगकर्ता के रूप में MySQL चला रहा हूँ।

+1

यह सुनिश्चित नहीं है कि [यह] (http://dev.mysql.com/doc/refman/5.0/en/cannot-create.html) मदद करता है। इसके लायक होने के लिए, 'gics_v2.csv "ढूंढें /' नाम" के रूप में रूट को आपके कंप्यूटर पर फ़ाइल का पता लगाना चाहिए – benjammin

+1

@ बीएनएम धन्यवाद बेन, मुझे इसे खोजने के लिए 'सुडो' का उपयोग करना था, लेकिन यह/usr/local/mysql के अंतर्गत है -5.5.17-osx10.6-x86_64/डेटा /। आप इसकी बहुत सराहना करते हैं। –

उत्तर

4

यह एक अनुमति समस्या है क्योंकि आप mysql उपयोगकर्ता को अपनी निजी होम निर्देशिका में लिखने की कोशिश कर रहे हैं। आपके द्वारा/usr/local/बजाय में बनाए गए फ़ोल्डर में लिखने का प्रयास करें और केवल सुरक्षित होने के लिए, आप अपने मैक के बाद वैश्विक पढ़ने/लिखने की अनुमति दे सकते हैं।

ओपन अपने मैक पर टर्मिनल:

cd /usr/local

mkdir DbOutput

sudo chmod -R 777 DbOutput

फिर वापस अपने कोड लेकिन परिवर्तन पथ के लिए

:

select date_base, fractile_v2, gics, count(gvkey_iid)

from master

where fractile_v2 <= 15 and

fractile_v2 != 0

group by date_base, gics, fractile_v2

order by date_base, fractile_v2

limit 100000

INTO OUTFILE '/usr/local/DbOutput/gics_v2.csv'

FIELDS TERMINATED BY ',';

+0

बहुत बहुत धन्यवाद माइक। मुझे लगता है कि अनुमतियों के साथ मुझे चारों ओर खेलना होगा। यह थोड़ी देर हो गया है क्योंकि मैंने यह सामान किया था। मैं मदद की सराहना करता हूं। –

+0

कोई समस्या नहीं है। मैं इस साइट का उपयोग कर रहा हूं हाल ही में मुझे वापस देने की आवश्यकता महसूस हुई। यह मेरा पहला जवाब है और वोट भी आपको धन्यवाद देता है। ;-) –

+0

मैं इस से सहमत नहीं हूं - यह वास्तव में प्रश्न का उत्तर नहीं देता है, और किसी को निर्देशिका बनाने के लिए सलाह देता है 777 एक हैक की तरह है। अधिक उपयुक्त अनुमतियों का उपयोग करने के लिए बेहतर है। –

2

डिफ़ॉल्ट रूप से चयन ... outfile जांच निर्देशिका में फ़ाइलों डालता है जहां डाटा फाइलें रहते हैं। तो /path/to/datadir/databasename/gics_v2.csv

जैसे कुछ यह सर्वर को सर्वर के रूप में लिखता है, क्लाइंट नहीं। तो यह आपके उपयोगकर्ता की अनुमतियों का उपयोग नहीं कर रहा है, बल्कि उपयोगकर्ता जो mysqld प्रक्रिया चला रहा है (जो आमतौर पर osx पर _mysql है)

आपको बस इसे एक पथ देना होगा जहां उस उपयोगकर्ता को लिखने की अनुमति है।

+0

देखें। मैंने पाया कि यह कहां लिख रहा था और एक नई विशिष्ट निर्देशिका बनाई और सर्वर उपयोगकर्ता को लिखने की अनुमति दी। तुम्हारी सहायता सराहनीय है। –

0

मैं मैक ओएस एक्स सर्वर 10.7.4 चला रहा हूँ और मेरे लिए, outfile निर्देशिका /var/mysql/databasename/

1

OUTPUT निर्देशिका है मैं जानता हूँ कि सवाल है, पुराना हो चुका है, लेकिन सिर्फ FYI करें मेरी मैक ओएस एक्स 10.10 पर, ऐसा कुछ है: /usr/local/mysql-5.7.10-osx10.9-x86_64/data/databasename/***.csv

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