মাইএসকিউএলে এসকিউএল স্ক্রিপ্ট কীভাবে চালানো যায়?


409

আমি মাইএসকিউএলে এসকিউএল কোয়েরিযুক্ত একটি পাঠ্য ফাইল কার্যকর করতে চাই।

আমি চালানোর চেষ্টা করেছি source /Desktop/test.sqlএবং ত্রুটিটি পেয়েছি:

mysql>। \ হোম \ শিবকুমার \ ডেস্কটপ \ test.sql এরর

আমি কী ভুল করছি তার কোন ধারণা?



মূলত আমি মনে করি এটি এখানে উত্তর হওয়া উচিত: \। /home/sivakumar/Desktop/test.sql
তালসিবিনি

উত্তর:


433

আপনি যদি মাইএসকিউএল কমান্ড লাইনে থাকেন তবে mysql>আপনাকে এসকিউএল ফাইল হিসাবে ঘোষণা করতে হবে source

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

29
ম্যাকের mysql 5.6.10 এর জন্য, ফাইল পাথের জন্য কোনও একক উদ্ধৃতির প্রয়োজন নেই।
আরএনএ

3
উইন্ডোগুলির জন্য, '/' এর পরিবর্তে '/' ব্যবহার করে আমার জন্য সঠিকভাবে কাজ করেছিল। আমি মূলত '/' ব্যবহার করার সময় ত্রুটি পেয়েছি। এটিই আমার পক্ষে কাজ করেছে ... উত্স সি: / ব্যবহারকারী / ম্যাকম্বার্স / ডাউনডাউনস / মিডকোস্ট_ডিবি.এসকিএল;
জ্যাক ম্যাকোবার 15

উবুন্টুতেও উদ্ধৃতিগুলি ফেলে দিন (mysql Ver 14.14 debian-linux-gnu (x86_64) এডিটলাইন মোড়ক ব্যবহার করে)
সিদ্ধার্থ

1
@ ক্যাপিল কিসের সাথে সম্পর্কিত? আপনি এই মুহুর্তে মাইএসকিউএল এর ভিতরে রয়েছেন, তাই ভয় পাবার কোনও আত্মীয় নেই।
টমাস এডওয়ার্ডস

1
@ সারাহ আপনি \ জায়গার আগে ব্যবহার করতে পারেন , বা ফাইলের নামটি মোড়াতে পারেন "
থমাস এডওয়ার্ডস

165

আপনার কাছে যথেষ্ট প্রচুর বিকল্প রয়েছে:

  • মাইএসকিউএল কমান্ড লাইন ক্লায়েন্ট ব্যবহার করুন: mysql -h hostname -u user database < path/to/test.sql
  • মাইএসকিউএল জিইউআই সরঞ্জামগুলি ইনস্টল করুন এবং আপনার এসকিউএল ফাইলটি খুলুন, তারপরে এটি কার্যকর করুন
  • আপনার ওয়েবসারভারের মাধ্যমে ডাটাবেস উপলব্ধ থাকলে phpmysql ব্যবহার করুন

3
ব্যবহারকারীর পাসওয়ার্ড (-p বিকল্প) সম্পর্কে কী?
আমির কাটজ

@ আমিরকাটজ পাসওয়ার্ডটি -pবিকল্পের সাথে দেওয়া যেতে পারে, এটির প্রস্তাব দেওয়া হয় না: একই হোস্টের অন্যান্য ব্যবহারকারীরা psএই ক্ষেত্রে এটি পড়ার মতো সিস্টেম সরঞ্জাম ব্যবহার করতে পারেন ।
ইউজেন রিইক

1
@ ইউজেনরেইক -pকোনও যুক্তি ছাড়াই পরের লাইনে পাসওয়ার্ডটি প্রবেশের অনুরোধ জানায়
ববি জ্যাক

130

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে একটি টেক্সট ফাইলে লেখা মাইএসকিএল বিবৃতি কার্যকর করতে পারেন:

mysql -u yourusername -p yourpassword yourdatabase < text_file

যদি আপনার ডেটাবেস এখনও তৈরি না করা হয় তবে প্রথমে আপনার মাইএসকিএলে লগইন করুন:

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-commands.html


7
Windows এ: পাসওয়ার্ড আমি এটা কাজ (পাসওয়ার্ড নিজেই কোনো শূণ্যস্থান বা বিশেষ অক্ষর ধারণ না) করতে উদ্ধৃতি চিহ্ন এবং কোন স্থান ব্যবহার করার জন্য ছিল:mysql -u yourusername -p"yourpassword"
TmTron

1
আপনি প্রম্পট করা আপনার পাসওয়ার্ড না চান তাহলে আমি বিশ্বাস করি পদ্ধতি এখানে দেওয়া কাজ করবে: stackoverflow.com/questions/9293042/...
alex9311

58

এটি করার জন্য আমার প্রিয় বিকল্পটি হ'ল:

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

আমি এটি এইভাবে ব্যবহার করি কারণ আপনি যখন এটি "" দিয়ে স্ট্রিং করেন তখন আপনি ভুল পথ এবং ফাঁকা স্থানগুলি এবং - এবং সম্ভবত আরও বেশি সমস্যাগুলির মুখোমুখি হননি যা সমস্যাগুলি এড়িয়ে চলে iding


@ এলকুকো মন্তব্যে আমি এই কমান্ডটি [স্পেস] এর সাথে আগে ব্যবহার করার পরামর্শ দিচ্ছি যাতে এটি ইতিহাসে সংরক্ষণের বিষয়টি উপেক্ষা করতে বাশকে বলে, এটি বেশিরভাগ ব্যাশে বাক্স থেকে বেরিয়ে আসবে।

ইতিহাসে এটি আপনার কমান্ডটি সংরক্ষণ করার ক্ষেত্রে নিম্নলিখিত সমাধানগুলি দেখুন:

ইতিহাসে না রেখে কমান্ড কার্যকর করুন


অতিরিক্ত সুরক্ষা সম্পাদনা

আপনি যদি অতিরিক্ত সুরক্ষিত হতে চান তবে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন এবং কমান্ড লাইন ইনপুটটিতে পাসওয়ার্ড প্রবেশ করতে পারেন:

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

18
আমি কমান্ড লাইনে পাসওয়ার্ডটি দেওয়ার পরামর্শ দিচ্ছি না, কারণ এটি ~ / .bash_history এ সংরক্ষণ করা হবে এবং অন্যান্য প্রোগ্রাম ট্রাট / প্রোক / দ্বারা অ্যাক্সেস করা যায়।
elcuco

@ এলকুকোর দুর্দান্ত পরামর্শ! এছাড়াও, সম্ভবত -p এর পরে অন্য পতাকা ব্যবহার করুন (বা এটি শেষ আর্গ হবে) যাতে অন্য প্যারামিটারটি ভুল পাসওয়ার্ড হিসাবে চিহ্নিত পাসওয়ার্ড হিসাবে নেওয়া হয় না।
ডেভনেটর

দয়া করে নোট করুন, কমান্ড লাইন আর্গুমেন্টগুলি এখনও অন্য ব্যবহারকারীদের দ্বারা দৃশ্যমান। উদাহরণ: i / in / proc / * / cmdline এর জন্য; প্রতিধ্বনি করুন $ i; বিড়াল $ i; সম্পন্ন
elcuco

কনসোলের ইতিহাসে আপনি আপনার সার্ভারের পাসওয়ার্ড উন্মোচন করার সাথে সাথে এটি
পুনঃবিবেচনা নয়

@ আলেকিয়াসডিয়াকোগিয়ানিস আপনি কি উদাহরণ দিতে পারেন যখন আপনি কমান্ডের আগে [স্পেস] দিয়ে এটি সম্পাদন করবেন তখন আপনি ইতিহাস থেকে কমান্ডটি কীভাবে দেখতে পারবেন?
talsibony

56

শীর্ষস্থানীয় সমস্ত উত্তর ভাল। তবে কেবলমাত্র কেউ যদি রিমোট সার্ভারে একটি পাঠ্য ফাইল থেকে ক্যোয়ারী চালাতে চান এবং কোনও ফাইলে ফলাফল (কনসোল দেখানোর পরিবর্তে) সংরক্ষণ করতে চান তবে আপনি এটি করতে পারেন:

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

আশা করি এটি কাউকে সাহায্য করবে।


10
আমি মনে করি -pএবং পাসওয়ার্ডের মধ্যে কোনও স্থান থাকতে হবে না
ওয়েবনেট

যদি ফাইলটিতে লেখার উদ্দেশ্যটি ডেটা ডাম্প গ্রহণ করে তবে আমার ধারণা 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;

ছবিতে দেখুন:


অসংখ্য ধন্যবাদ! এমনকি যদি আপনার ব্যবহারকারীর সুডোর অধিকার না থাকে এবং রিমোট অ্যামাজন
আরডিএসে নেই

20

আমি এখানেও এই উত্তরটি অনুসন্ধান করতে এসেছি এবং আমি এখানে যা পেয়েছি তা আমার পক্ষে সবচেয়ে ভাল কাজ করেছে: দ্রষ্টব্য আমি উবুন্টু 16.xx ব্যবহার করছি

  1. MySQL ব্যবহার করে অ্যাক্সেস করুন:

mysql -u <your_user> - p

  1. মাইএসকিএল প্রম্পটে, প্রবেশ করুন:

source file_name.sql

আশাকরি এটা সাহায্য করবে.


2
প্রম্পটটি আরম্ভ করার পরিবর্তে, কেবলমাত্র একটি একক কমান্ডের দুটি ধাপ একত্রিত করতে এটি কার্যকর হতে পারে:mysql -u<user> -p -e 'source filename.sql'
জুনিক্স

ধন্যবাদ, @ জুনিক্স! উৎস এই ভাবে ব্যবহৃত বিকল্প আমি খুঁজছেন হয়।
ম্যানুয়েলজেই

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

একক উদ্ধৃতি উল্লেখ করবেন না।

উপরের কমান্ডটি যদি কাজ না করে তবে সি: ড্রাইভে ফাইলটি অনুলিপি করুন এবং আবার চেষ্টা করুন। নিচে দেখানো হয়েছে,

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 ডিরেক্টরি থেকে চালানো উচিত, সুতরাং সিডি।

আশা করি এটি কেবল অনর্থক নয় সহায়ক।


3

যেহেতু mysql -u yourusername -p yourpassword yourdatabase < text_fileরিমোট সার্ভারে কাজ করেনি (অ্যামাজনের ইসি 2) ...

ডাটাবেসটি প্রথম তৈরি করা হয়েছে তা নিশ্চিত করুন।

তারপর:

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

3

ভবিষ্যতের রেফারেন্সের জন্য, আমি আপনার এমএসকিএল কনসোলে উইন্ডোজের অধীনে পূর্বোক্ত পদ্ধতিগুলির বিরুদ্ধে বনাম কাজ করতে এটি পেয়েছি:

মাইএসকিউএল >>source c://path_to_file//path_to_file//file_name.sql;

যদি আপনার রুট ড্রাইভটিকে "সি" না বলা হয় তবে আপনার ড্রাইভকে কী বলা হয় তার সাথে কেবল বদলি করুন। প্রথমে ব্যাকস্ল্যাশ চেষ্টা করুন, যদি তারা কাজ না করে তবে ফরোয়ার্ড স্ল্যাশ ব্যবহার করে দেখুন। যদি সেগুলিও কাজ না করে, আপনার নিজের ফাইলের পুরো পথ, ফাইলের নামের উপরের এসএসএল এক্সটেনশন রয়েছে তা নিশ্চিত করুন এবং যদি আপনার সংস্করণটি আধা-কলোনকে জোর দেয়, তবে তা নিশ্চিত করুন এবং আবার চেষ্টা করুন।


0

আমার এই ত্রুটি ছিল, এবং আমি যে সমস্ত পরামর্শ পেতে পারি তার কোনও চেষ্টা করতে পারি নি।

অবশেষে, সমস্যাটি হ'ল আমার ফোল্ডারে ফোল্ডারের নামটিতে একটি জায়গা ছিল যা ফোল্ডারের পথে একটি ফরোয়ার্ড-স্ল্যাশ হিসাবে উপস্থিত হয়, একবার আমি এটি খুঁজে পেয়েছিলাম এবং সরিয়ে ফেললে, এটি ঠিকঠাক কাজ করেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.