ฉันจะนำเข้าฐานข้อมูลด้วย MySQL จากเทอร์มินัลได้อย่างไร


373

ฉันจะนำเข้าฐานข้อมูลด้วย mysql จากเทอร์มินัลได้อย่างไร

ฉันไม่พบไวยากรณ์ที่แน่นอน

คำตอบ:


761

สมมติว่าคุณอยู่บนคอนโซล Linux หรือ Windows:

แจ้งรหัสผ่าน:

mysql -u <username> -p <databasename> < <filename.sql>

ป้อนรหัสผ่านโดยตรง (ไม่ปลอดภัย):

mysql -u <username> -p<PlainPassword> <databasename> < <filename.sql>

ตัวอย่าง:

mysql -u root -p wp_users < wp_users.sql

mysql -u root -pPassword123 wp_users < wp_users.sql

ดูสิ่งนี้ด้วย:

4.5.1.5 การดำเนินการคำสั่ง SQL จากไฟล์ข้อความ


หมายเหตุ : หากคุณอยู่บน windows คุณจะต้องcd(เปลี่ยนไดเรกทอรี) เป็นไดเรกทอรี MySQL / bin ของคุณภายใน CMD ก่อนดำเนินการคำสั่ง


139
+1 ยกเว้นว่าคุณไม่ควรส่งรหัสผ่านเป็นพารามิเตอร์ CLI แทนที่จะระบุอ็อพชัน -p และป้อนด้วยตนเองหลังจากพร้อมต์
St.Woland

13
ไม่มีช่องว่างระหว่าง -p และรหัสผ่านหากคุณต้องการป้อนโดย shell
Kethryweryn

8
mysql -u ชื่อผู้ใช้ -h ชื่อโฮสต์ -ppassword databasename <filename.sql สำหรับโฮสต์ระยะไกลจากเทอร์มินัล
Shaik Rilwan

8
หากคุณอยู่ในพรอมต์คำสั่ง mysql แล้ว (mysql>) ให้พิมพ์ source full_path_of_file (หมายเหตุ: เลือกฐานข้อมูลตามคำสั่ง USE DATABASE_NAME ก่อนนำเข้า)
Ankit Sharma

3
@Pekka 웃หากเราใช้sourceเราจะเห็นข้อความที่ให้ข้อมูล ( "ผลกระทบของแถว" ) และข้อความแสดงข้อผิดพลาด แต่การใช้โซลูชันของคุณเราจะเห็นข้อความที่ใช้< filename.sqlอย่างไร
Pacerier

141

วิธีที่ดีกว่าสำหรับ windows:

  1. เปิดคอนโซลและเริ่มโหมด MySQL แบบโต้ตอบ

  2. use <name_of_your_database>;

  3. source <path_of_your_.sql>


2
ทำไมเราไม่ต้องการ หลังจากชื่อไฟล์
Nabeel Khan

6
@NabeelKhan ส่วนใหญ่คำสั่ง SQL จำเป็นต้องมี;ในตอนท้ายของคำสั่ง แต่มีข้อยกเว้นบางประการรวมทั้งและUSE SOURCE
Simon East

1
ฉันสงสัยว่าสิ่งนี้จะทำงานได้เร็วกว่าการไพพ์ไฟล์ใน ฉันสงสัยใช่
Simon East

นี่เร็วกว่าการนำเข้าผ่าน HeidiSQL ... 3GB ใน 20 นาที!
kmdsax

อยากรู้อยากเห็น เมื่อฉันออกคำสั่งดำเนินการประสบความสำเร็จ ก่อนที่มันจะไม่ ;source
Nikos

33

mysql -u <USERNAME> -p <DB NAME> < <dump file path>

-u - สำหรับชื่อผู้ใช้

-p - เพื่อขอรหัสผ่าน

เช่น. mysql -u root -p mydb < /home/db_backup.sql

คุณยังสามารถระบุรหัสผ่านที่นำหน้าด้วย -p แต่ด้วยเหตุผลด้านความปลอดภัยจึงไม่แนะนำให้ทำ รหัสผ่านจะปรากฏขึ้นในคำสั่งเองค่อนข้างหลอกลวง


2
นี่คือคำตอบที่ฉันกำลังมองหา "<" นี่เป็นสัญญาณที่ฉันจากไป
Pravinraj Venkatachalam

หาก mydb ไม่มีอยู่แล้วจะสร้างแบบไดนามิกได้อย่างไรเมื่อเราใช้คำสั่ง mysqldump?
क्षयपरूळेकर

12

โดยตรงจาก var / www / html

mysql -u username -p database_name < /path/to/file.sql

จากภายใน mysql:

mysql> use db_name;
mysql> source backup-file.sql



6

ฉันมักจะใช้คำสั่งนี้เพื่อโหลดข้อมูล SQL ของฉันเมื่อแบ่งออกเป็นไฟล์ที่มีชื่อ: 000-tableA.sql, 001-tableB.sql, 002-tableC.sql

for anyvar in *.sql; do <path to your bin>/mysql -u<username> -p<password>  <database name> < $anyvar; done

ทำงานได้ดีบนเชลล์ OSX


5

วิธีโหลดจากบรรทัดคำสั่ง

คำอธิบาย:

  1. สร้างฐานข้อมูลก่อนหรือใช้ฐานข้อมูลที่มีอยู่ ในกรณีของฉันฉันใช้ฐานข้อมูลที่มีอยู่

  2. โหลดฐานข้อมูลโดยให้<name of database> = ClassicModelsในกรณีของฉันและใช้ผู้ประกอบการ<ให้เส้นทางไปยังdatabase = sakila-data.sql

  3. ด้วยการเรียกใช้ตารางแสดงฉันได้รับรายการตารางตามที่คุณเห็น

หมายเหตุ: ในกรณีของฉันฉันได้รับข้อผิดพลาด 1,062เนื่องจากฉันพยายามโหลดสิ่งเดียวกันอีกครั้ง


5
mysql -u username -ppassword dbname < /path/file-name.sql

ตัวอย่าง

mysql -u root -proot product < /home/myPC/Downloads/tbl_product.sql

ใช้สิ่งนี้จากเทอร์มินัล


5

คำสั่งด้านล่างใช้งานได้กับ Ubuntu 16.04 ฉันไม่แน่ใจว่ามันทำงานได้หรือไม่หรือใช้แพลตฟอร์ม Linux อื่น

ส่งออกไฟล์ SQL:

$ mysqldump -u [user_name] -p [database_name] < [database_name.sql]  

ตัวอย่าง: mysqldump -u root -p max_development> max_development.sql

นำเข้าไฟล์ SQL:

$ mysqldump -u [user_name] -p [database_name] > [file_name.sql]

Example: mysqldump -u root -p max_production < max_development.sql

หมายเหตุไฟล์ SQL ควรมีอยู่ในไดเรกทอรีเดียวกัน


5

เปิด Terminal แล้ว

 mysql -u root -p

 eg:- mysql -u shabeer -p

หลังจากนั้นสร้างฐานข้อมูล

 mysql> create database "Name";

 eg:- create database INVESTOR;

จากนั้นเลือกฐานข้อมูลใหม่นั้น "นักลงทุน"

 mysql> USE INVESTOR;

เลือกเส้นทางของไฟล์ sql จากเครื่อง

 mysql> source /home/shabeer/Desktop/new_file.sql;

จากนั้นกด Enter แล้วรอสักครู่หากดำเนินการเสร็จแล้ว

 mysql> exit

ป้อนคำอธิบายรูปภาพที่นี่


4
  1. เปิดไคลเอนต์ Command Line ของ MySQL และพิมพ์รหัสผ่านของคุณ

  2. เปลี่ยนเป็นฐานข้อมูลที่คุณต้องการใช้สำหรับการนำเข้าข้อมูลไฟล์. sql ไป ทำได้โดยพิมพ์:

    USE your_database_name
  3. ตอนนี้ค้นหาไฟล์. sql ที่คุณต้องการดำเนินการ
    หากไฟล์อยู่ในไดเรคทอรี่หลัก C: ไดรฟ์และชื่อไฟล์สคริปต์. sql คือcurrentSqlTable.sqlคุณจะต้องพิมพ์ดังต่อไปนี้:

    \. C:\currentSqlTable.sql

    และกดEnterเพื่อเรียกใช้งานไฟล์สคริปต์ SQL


7
รูปที่ 1/2/3 คืออะไร
glglgl

4

หลังจากดิ้นรนมาระยะหนึ่งฉันพบข้อมูลในhttps://tommcfarlin.com/importing-a-large-database/

  1. เชื่อมต่อกับ Mysql (ใช้รูทสำหรับทั้งชื่อผู้ใช้และรหัสผ่าน):

    mysql -uroot -proot
  2. เชื่อมต่อกับฐานข้อมูล (สมมติว่าชื่อ emptyDatabase (คุณควรได้รับข้อความยืนยัน):

    connect emptyDatabase

3 นำเข้าซอร์สโค้ดสมมติว่าไฟล์นั้นชื่อว่า mySource.sql และอยู่ในโฟลเดอร์ที่ชื่อว่า mySoureDb ภายใต้โปรไฟล์ของผู้ใช้ชื่อ myUser:

source /Users/myUser/mySourceDB/mySource.sql

3

หากคุณกำลังใช้sakila-dbจากเว็บไซต์ mysql มันเป็นเรื่องง่ายมากบนแพลตฟอร์ม Linux เพียงทำตามขั้นตอนที่กล่าวถึงด้านล่างหลังจากดาวน์โหลดไฟล์ zip ของsakila-dbแล้วแตกไฟล์ออกมา ตอนนี้คุณจะมีสองไฟล์หนึ่งคือsakila-Schema.sqlและคนอื่น ๆ ที่เป็น sakila-data.sql


  1. เปิดเทอร์มินัล
  2. ป้อนคำสั่งmysql -u root -p <sakila-schema.sql
  3. ป้อนคำสั่งmysql -u root -p <sakila-data.sql
  4. ตอนนี้ป้อนคำสั่งmysql -u root -pแล้วป้อนรหัสผ่านตอนนี้คุณได้ป้อนระบบ mysql พร้อมฐานข้อมูลเริ่มต้นแล้ว
  5. หากต้องการใช้ฐานข้อมูล sakila ให้ใช้คำสั่งนี้ใช้ sakila;
  6. หากต้องการดูตารางใน sakila-db ให้ใช้ คำสั่งshow tables

โปรดระวังว่าไฟล์ที่แตกนั้นมีอยู่ในโฮมไดเร็กตอรี่


2

ใน Ubuntu จากหน้าจอ MySQLคุณใช้ไวยากรณ์นี้แล้ว:

mysql> use <dbname> -> คำสั่ง USE บอกให้ MySQL ใช้dbnameเป็นฐานข้อมูลเริ่มต้นสำหรับคำสั่งที่ตามมา

mysql> source <file-path>

ตัวอย่างเช่น :

mysql> use phonebook;

mysql> source /tmp/phonebook.sql;

สำคัญ : ตรวจสอบให้แน่ใจว่าไฟล์ sql อยู่ในไดเรกทอรีที่ mysql สามารถเข้าถึง like / tmp


1

ก่อนเรียกใช้คำสั่งบนเทอร์มินัลคุณต้องแน่ใจว่าคุณได้ติดตั้ง MySQL ไว้ในเทอร์มินัลของคุณ

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อติดตั้ง:

sudo apt-get update
sudo apt-get install mysql-server

refrence ที่นี่

หลังจากนั้นคุณสามารถใช้คำสั่งต่อไปนี้เพื่อนำเข้าฐานข้อมูล:

mysql -u <username> -p <databasename> < <filename.sql>

1

วิธีที่ง่ายที่สุดในการนำเข้าฐานข้อมูลใน MYSQL ของคุณจากเทอร์มินัลทำโดยกระบวนการที่กล่าวถึงด้านล่าง -

mysql -u root -p root database_name < path to your .sql file

สิ่งที่ฉันทำข้างต้นคือ:

  1. เข้าสู่ mysql ด้วยชื่อผู้ใช้และรหัสผ่านของฉัน (นี่คือroot& root)
  2. หลังจากป้อนรหัสผ่านฉันให้ชื่อฐานข้อมูลที่ฉันต้องการนำเข้าไฟล์. sql ของฉัน โปรดตรวจสอบว่าฐานข้อมูลมีอยู่แล้วใน MYSQL ของคุณ
  3. ชื่อฐานข้อมูลจะตามด้วย<จากนั้นเส้นทางไปยังไฟล์. sql ของคุณ ตัวอย่างเช่นหากไฟล์ของฉันถูกเก็บไว้ในเดสก์ท็อปเส้นทางจะเป็น/home/Desktop/db.sql

แค่นั้นแหละ. เมื่อคุณทำสิ่งนี้เสร็จแล้วให้กด Enter แล้วรอไฟล์. sql ของคุณเพื่ออัปโหลดไปยังฐานข้อมูลที่เกี่ยวข้อง


0

จะต้องไม่มีช่องว่างระหว่าง -p และรหัสผ่าน

mysql -u [dbusername] -p[dbpassword] [databasename] < /home/serverusername/public_html/restore_db/database_file.sql

ฉันมักจะใช้มันทำงานได้อย่างสมบูรณ์ ขอบคุณที่ถามคำถามนี้ ขอให้มีความสุขมาก ๆ ในวันนี้นะ Njoy :)


เรายังสามารถตั้งค่าการตั้งค่านี้ในงาน cron (กำหนดเวลางาน) บนเซิร์ฟเวอร์ที่ใช้ร่วมกันโดยเฉพาะและคลาวด์เพื่อรีเซ็ตหรือนำเข้าฐานข้อมูลเป็นครั้งคราวโดยอัตโนมัติ
Kamlesh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.