MySQL में SQL स्क्रिप्ट कैसे चलाएं?


409

मैं MySQL में SQL क्वेरीज़ वाले टेक्स्ट फ़ाइल को निष्पादित करना चाहता हूं।

मैंने चलाने की कोशिश की source /Desktop/test.sqlऔर त्रुटि प्राप्त की:

mysql>। \ होम \ _ शिवकुमार \ डेस्कटॉप \ test.sql ERROR: फ़ाइल खोलने में विफल '\ _ \ _ शिवकुमार \ डेस्कटॉप \ test.sql', त्रुटि: २

मैं क्या गलत कर रहा हूँ पर कोई विचार?



मूल रूप से मुझे लगता है कि यह यहाँ उत्तर होना चाहिए: \। / होम
शिवकुमार /

जवाबों:


433

यदि आप MySQL कमांड लाइन में mysql>हैं, तो आपको एसक्यूएल फ़ाइल को घोषित करना होगा source

mysql> source \home\user\Desktop\test.sql;

29
मैक पर mysql 5.6.10 के लिए, फ़ाइल पथ के लिए किसी भी उद्धरण की आवश्यकता नहीं है।
RNA

3
विंडोज़ के लिए, '\' के बजाय '' का उपयोग करना मेरे लिए सही ढंग से काम करता है। मूल रूप से '/' का उपयोग करने पर मुझे त्रुटियां मिलीं। यह वही है जो मेरे लिए काम कर रहा है ... स्रोत C: /Users/macombers/Downloads/midcoast_db.sql;
जैक मैकमोबर

Ubuntu पर भी उद्धरण छोड़ें (mysql Ver 14.14 debian-linux-gnu (x86_64) EditLine आवरण का उपयोग करके)
सिद्धार्थ

1
@ कपिल रिश्तेदार क्या? आप इस बिंदु पर MySQL के अंदर हैं, इसलिए मुझे डर नहीं है कि कोई रिश्तेदार है।
थॉमस एडवर्ड्स

1
@ सार आप \ अंतरिक्ष से पहले उपयोग कर सकते हैं , या फ़ाइल नाम के साथ लपेट सकते हैं "
थॉमस एडवर्ड्स

165

आपके पास काफी विकल्प हैं:

  • MySQL कमांड लाइन क्लाइंट का उपयोग करें: mysql -h hostname -u user database < path/to/test.sql
  • MySQL GUI टूल इंस्टॉल करें और अपनी SQL फ़ाइल खोलें, फिर इसे निष्पादित करें
  • यदि आपके वेबसर्वर के माध्यम से डेटाबेस उपलब्ध है, तो phpmysql का उपयोग करें

3
उपयोगकर्ता के पासवर्ड (-p विकल्प) के बारे में क्या?
आमिर काट्ज़

@AmirKatz जबकि पासवर्ड -pविकल्प के साथ दिया जा सकता है , यह अनुशंसित नहीं है: एक ही होस्ट पर अन्य उपयोगकर्ता सिस्टम टूल्स का उपयोग कर सकते हैं जैसे psकि इस मामले में इसे पढ़ना।
यूजेन रीक

1
@EugenRieck -pबिना तर्क के अगली पंक्ति में प्रवेश करने के लिए पासवर्ड का संकेत देता है
बॉबी जैक

130

आप निम्नलिखित आदेशों का उपयोग करते हुए टेक्स्ट फ़ाइल में लिखे गए mysql स्टेटमेंट्स को निष्पादित कर सकते हैं:

mysql -u yourusername -p yourpassword yourdatabase < text_file

यदि आपका डेटाबेस अभी तक नहीं बना है, तो पहले mysql में लॉग इन करें:

mysql -u yourusername -p yourpassword yourdatabase

फिर:

mysql>CREATE DATABASE a_new_database_name

फिर:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

इससे हो जाना चाहिए!

अधिक जानकारी यहाँ: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commun.html


7
विंडोज पर: पासवर्ड के लिए मुझे इसे काम करने के लिए उद्धरण चिह्नों और सं स्पेस का उपयोग करना होगा (पासवर्ड में स्वयं कोई स्पेस या विशेष वर्ण नहीं था):mysql -u yourusername -p"yourpassword"
TmTron

1
अगर आप नहीं चाहते कि आपका पासवर्ड शीघ्र हो, तो मेरा मानना ​​है कि यहाँ बताई गई विधि काम करेगी: stackoverflow.com/questions/9293042/…
alex9311

58

मेरा पसंदीदा विकल्प यह होगा:

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"

मैं इसे इस तरह से उपयोग करता हूं क्योंकि जब आप इसे "" गलत रास्ते से बचने और रिक्त स्थान के साथ गलतियों से बचते हैं और - और शायद चर के साथ अधिक समस्याएं हैं जिनका मैंने सामना नहीं किया।


@Elcuco टिप्पणी के साथ मैं इस स्पेस के साथ इस कमांड का उपयोग करने का सुझाव देता हूं, इससे पहले कि इसे इतिहास में सहेजने की उपेक्षा करने के लिए बैश बताएं, यह अधिकांश बैश में बॉक्स से बाहर काम करेगा।

यदि यह अभी भी इतिहास में आपकी कमांड को सहेज रहा है, तो कृपया निम्नलिखित समाधान देखें:

इतिहास में रखे बिना आदेश निष्पादित करें


अतिरिक्त सुरक्षा संपादित करें

बस अगर आप अतिरिक्त सुरक्षित होना चाहते हैं तो आप निम्न कमांड का उपयोग कर सकते हैं और कमांड लाइन इनपुट में पासवर्ड दर्ज कर सकते हैं:

mysql --user="username" --database="databasename" -p < "filepath"

18
मैं कमांड लाइन को पासवर्ड पास करने की अनुशंसा नहीं करूंगा, क्योंकि यह ~ / .bash_history में सहेजा जाएगा, और अन्य कार्यक्रमों के माध्यम से पहुँचा जा सकता है।
एल्कसो

@Elcuco से उत्कृष्ट सलाह! इसके अलावा, संभवतः -p के बाद एक और ध्वज का उपयोग करें (या कि अंतिम arg हो) तो एक अन्य पैरामीटर गलत तरीके से इच्छित पासवर्ड के लिए नहीं लिया गया है।
डेवनेटर

कृपया ध्यान दें कि, कमांड लाइन तर्क अभी भी अन्य उपयोगकर्ताओं द्वारा दिखाई दे रहे हैं। उदाहरण: i in / proc / * / cmdline; $ इको करो; बिल्ली $ i; किया
एल्कसो

यह अनुशंसा नहीं है क्योंकि आप कंसोल के इतिहास के लिए अपने सर्वर पासवर्ड को उजागर करते हैं
एलेक्सियस डीआईएओकेजीएनआईएन

@AlexiusDiakogiannis क्या आप मुझे उदाहरण दे सकते हैं कि आप कमांड को इतिहास से कैसे देख सकते हैं जब आप इसे कमांड से पहले [स्पेस] के साथ निष्पादित करते हैं?
तल्लिबोनी

56

सभी शीर्ष उत्तर अच्छे हैं। लेकिन अगर कोई किसी दूरस्थ सर्वर पर पाठ फ़ाइल से क्वेरी चलाना चाहता है और परिणाम को फ़ाइल (कंसोल पर दिखाने के बजाय) में सहेजना चाहता है, तो आप यह कर सकते हैं:

mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file

आशा है कि यह किसी की मदद करता है।


10
मुझे लगता है कि बीच में -pऔर पासवर्ड के बीच कोई जगह नहीं होनी चाहिए
WebNeat

यदि फ़ाइल लिखने का उद्देश्य डेटा डंप ले रहा है, तो मुझे लगता SELECT ... INTO OUTFILE /path/to/file.csvहै कि यह अधिक कुशल तरीका है। यहां विकल्प और वाक्यविन्यास देखें - dev.mysql.com/doc/refman/5.7/en/select-into.html
अनीस

20

के रूप में .sql फ़ाइल का पथ दें:

source c:/dump/SQL/file_name.sql;

छवि में देखें:


अनेक अनेक धन्यवाद! यह काम करता है, भले ही आपके उपयोगकर्ता के पास SUDO अधिकार न हो और दूरस्थ Amazon RDS पर
Volatil3

20

मैं यहाँ भी इस उत्तर की खोज में आया था, और यहाँ मैंने पाया कि मेरे लिए सबसे अच्छा काम करता है: नोट मैं Ubuntu 16 का उपयोग कर रहा हूँ। XXX

  1. का उपयोग कर mysql का उपयोग करें:

mysql -u <your_user> - p

  1. Mysql प्रॉम्प्ट पर, दर्ज करें:

source file_name.sql

उम्मीद है की यह मदद करेगा।


2
प्रॉम्प्ट शुरू करने के बजाय, यह केवल एक कमांड में दो चरणों को संयोजित करने के लिए भी उपयोगी हो सकता है:mysql -u<user> -p -e 'source filename.sql'
जूनिक्स

धन्यवाद, @junix! स्रोत इस तरह से इस्तेमाल किया विकल्प मैं के लिए क्या देख रहा था।
मैनुअल जेई

14
mysql> source C:\Users\admin\Desktop\fn_Split.sql

एकल उद्धरण निर्दिष्ट न करें।

यदि उपरोक्त कमांड काम नहीं कर रहा है, तो फ़ाइल को c: ड्राइव में कॉपी करें और फिर से प्रयास करें। जैसा की नीचे दिखाया गया,

mysql> source C:\fn_Split.sql

13

कमांड लाइन से सीधे पासवर्ड तर्क को पारित करने के लिए एक अच्छा अभ्यास नहीं है, यह में सहेजा गया है ~/.bash_history फ़ाइल और अन्य अनुप्रयोगों से सुलभ हो सकता है।

इसके बजाय इसका उपयोग करें:

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:


9

बहुत संभावना है, आपको बस स्लैश / ब्लैकस्लैश बदलने की आवश्यकता है: से

 \home\sivakumar\Desktop\test.sql

सेवा

 /home/sivakumar/Desktop/test.sql

तो आदेश होगा:

source /home/sivakumar/Desktop/test.sql

6

mysql कमांड प्रॉम्प्ट से निम्नलिखित का उपयोग करें -

source \\home\\user\\Desktop\\test.sql;

कोई उद्धरण का उपयोग करें। भले ही पथ में स्थान हो ('') कोई उद्धरण का उपयोग नहीं करता है


5

पुनर्निर्देशन के बजाय मैं निम्नलिखित कार्य करूंगा

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

यह फ़ाइल पाथ-टू-स्क्वेल-फ़ाइल को निष्पादित करेगा


5

ऐसा करने के कई तरीके हैं।

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

यदि आपको कमांड लाइन से त्रुटियां मिलती हैं, तो सुनिश्चित करें कि आप पहले चला चुके हैं

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

यह mysqld.exe निर्देशिका के भीतर से चलाया जाना चाहिए, इसलिए CD।

आशा है कि यह मददगार है और न केवल निरर्थक है।


3

चूंकि mysql -u yourusername -p yourpassword yourdatabase < text_fileएक दूरस्थ सर्वर (अमेज़न के EC2) पर काम नहीं किया ...

सुनिश्चित करें कि डेटाबेस पहले बनाया गया है।

फिर:

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql

3

भविष्य के संदर्भ के लिए, मैंने इसे अपने एमएसक्यूएल कंसोल में विंडोज के तहत, उपरोक्त तरीकों से काम करने के लिए पाया है:

mysql >>source c://path_to_file//path_to_file//file_name.sql;

यदि आपकी रूट ड्राइव को "c" नहीं कहा जाता है, तो बस आपके ड्राइव को क्या कहा जाता है, के साथ इंटरचेंज करें। पहले बैकस्लैश का प्रयास करें, अगर वे काम नहीं करते हैं, तो आगे की स्लैश की कोशिश करें। यदि वे भी काम नहीं करते हैं, तो सुनिश्चित करें कि आपके पास अपना पूरा फ़ाइल पथ है, फ़ाइल नाम पर .sql एक्सटेंशन, और यदि आपका संस्करण अर्ध-कॉलनों पर जोर देता है, तो सुनिश्चित करें कि यह वहां है और फिर से प्रयास करें।


0

मेरे पास यह त्रुटि थी, और मैंने बिना किसी लाभ के सभी सलाह की कोशिश की।

अंत में, समस्या यह थी कि मेरे फ़ोल्डर में फ़ोल्डर नाम में एक स्थान था जो फ़ोल्डर पथ में फ़ॉरवर्ड-स्लैश के रूप में दिखाई दे रहा था, एक बार जब मैंने पाया और इसे हटा दिया, तो यह ठीक काम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.