นำเข้าไฟล์ SQL ไปยัง mysql


191

nitmฉันมีฐานข้อมูลที่เรียกว่า ฉันไม่ได้สร้างตารางใด ๆ แต่ฉันมีไฟล์ SQL ซึ่งมีข้อมูลที่จำเป็นทั้งหมดสำหรับฐานข้อมูล ไฟล์นี้เป็นไฟล์ที่อยู่ในnitm.sql C:\ driveไฟล์นี้มีขนาดประมาณ 103 MB ฉันใช้เซิร์ฟเวอร์ wamp

ฉันใช้ไวยากรณ์ต่อไปนี้ในคอนโซล MySQL เพื่อนำเข้าไฟล์:

mysql>c:/nitm.sql;

แต่มันไม่ได้ผล



คำตอบ:


406

จากคอนโซล mysql:

MySQL> use DATABASE_NAME;

MySQL> source path/to/file.sql;


ตรวจสอบให้แน่ใจว่าไม่มีการสแลชก่อนทางถ้าคุณอ้างถึงเส้นทางที่สัมพันธ์กัน ... ฉันต้องใช้เวลาสักพักกว่าจะรู้ว่า! ฮ่า ๆ


36
คุณไม่จำเป็นต้องใช้สแลชข้างหน้าพา ธ หากคุณต้องการอ้างอิง หากคุณจะไปจากรากคุณจะเช่น/home/user/file.sql
Wes Johnson

5
น่าเสียดายที่ไม่มีวิธีเพิ่มคำตอบสำหรับรายการโปรด :(
baldrs

4
ใน Chrome พวกเขาเรียกว่าบุ๊กมาร์กและคุณสามารถคลิกที่ดาวในแถบที่อยู่ได้)
Andrew

2
@ ArseniuszŁozickiเพิ่มคำถามและคุณจะได้รับคำตอบ :) นั่นคือสิ่งที่ฉันทำ
mandza

2
เพียงเพิ่มคำตอบนี้ว่าpath/to/file.sqlเป็นเส้นทางระบบไฟล์ในท้องถิ่นที่ลูกค้า mysql เป็นที่ มีหลายครั้งที่เซิร์ฟเวอร์ MySQL คาดหวังว่าเส้นทางจะอยู่ฝั่งเซิร์ฟเวอร์ IE SELECT ... INTO OUTFILEซึ่งปล่อยไฟล์ลงในเส้นทางบนเซิร์ฟเวอร์ MySQL!
Devy

90

ในที่สุดฉันก็แก้ปัญหา ฉันวางไฟล์ `nitm.sql` ไว้ในไฟล์` bin` ของโฟลเดอร์ `mysql 'และใช้ไวยากรณ์ต่อไปนี้

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

และสิ่งนี้ใช้ได้ผล


8
นี่ไม่ใช่จากคอนโซล mysql ตามที่ OP ถาม แต่จากคอนโซลไปสู่ ​​mysql คำตอบจาก Robert Anthony Tribiana อธิบายถึงวิธีการทำจากคอนโซล mysql
halfpastfour.am

นี่ไม่ใช่วิธีที่แน่นอนในการแก้ปัญหาไม่ใช่วิธีแก้ปัญหา
Ashish Ratan

4
พวกคุณรู้ไหมว่านี่เป็น OP ที่ตอบคำถามนี้
Wes

หาก mysql ของคุณต้องการรหัสผ่านดังนั้นเมธอดจะไม่ทำงานคุณต้องได้รับคำตอบสูงสุดของ @d -_- b
shellbye

52

หากคุณใช้ wamp คุณสามารถลองสิ่งนี้ เพียงพิมพ์use your_Database_nameก่อน

  1. คลิกไอคอนเซิร์ฟเวอร์ wamp ของคุณจากนั้นค้นหาMYSQL > MSQL Consoleแล้วเรียกใช้

  2. หากคุณไม่มีรหัสผ่านให้กด Enter แล้วพิมพ์:

    mysql> use database_name;
    mysql> source location_of_your_file;

    หากคุณมีรหัสผ่านคุณจะต้องป้อนรหัสผ่าน ใส่รหัสผ่านของคุณก่อนแล้วพิมพ์:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file ควรมีลักษณะเช่น C:\mydb.sql

ดังนั้นการยกย่องคือmysql> source C: \ mydb.sql;

การอิมพอร์ต sql dump นี้มีประโยชน์มากสำหรับไฟล์ SQL ขนาดใหญ่

ฉันคัดลอกไฟล์mydb.sqไปยังไดเรกทอรีC:ควรเป็นตัวพิมพ์ใหญ่ C: เพื่อให้ทำงานได้

และนั่นคือมัน


1
คำตอบนี้ดูเหมือนว่าเฉพาะ WAMP ในขณะที่รหัสที่แสดงนั้นทำงานได้จากทุกสภาพแวดล้อมที่ใช้ MySQL ซึ่งคุณสามารถเข้าถึง MySQL ผ่านเทอร์มินัลหรือคอนโซล
halfpastfour.am

26

ใน windows หากคำแนะนำข้างต้นทำให้คุณมีข้อผิดพลาด (ไม่พบไฟล์หรือไม่ทราบ db) คุณอาจต้องการทับเครื่องหมายทับหน้า:

ในคอนโซล mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;

1
เครื่องหมายทับหน้าเดียวทำงานได้สำหรับฉันในเครื่อง Windows ของฉัน
Manoj Shrestha

17

ตกลงฉันใช้ Linux แต่ฉันคิดว่านี่เป็นความจริงสำหรับ Windows ด้วย คุณสามารถทำสิ่งนี้ได้โดยตรงจากพรอมต์คำสั่ง

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

หรือจากภายใน mysql prompt คุณสามารถใช้:

mysql>source sqlfilename.sql

แต่วิธีการทั้งสองนี้มีประโยชน์ของตัวเองในผลลัพธ์ที่พวกเขาแสดง ในวิธีแรกสคริปต์จะออกจากทันทีที่พบข้อผิดพลาด และส่วนที่ดีกว่าคือมันจะบอกคุณหมายเลขบรรทัดที่แน่นอนในไฟล์ต้นฉบับที่เกิดข้อผิดพลาด อย่างไรก็ตามจะแสดงข้อผิดพลาดเท่านั้น หากไม่พบข้อผิดพลาดสคริปต์จะแสดงข้อความใด ๆ ซึ่งอาจทำให้ตกใจเล็กน้อย เพราะคุณมักจะเรียกใช้สคริปต์ที่มีกองคำสั่งทั้งหมด

ตอนนี้วิธีที่สอง (จากภายในพรอมต์ mysql) มีประโยชน์ที่จะแสดงข้อความสำหรับคำสั่ง MySQL ที่แตกต่างกันในสคริปต์ หากพบข้อผิดพลาดจะแสดงข้อความแสดงข้อผิดพลาด mysql แต่ดำเนินการต่อผ่านสคริปต์ สิ่งนี้อาจดีเพราะคุณสามารถย้อนกลับไปแก้ไขข้อผิดพลาดทั้งหมดก่อนที่จะเรียกใช้สคริปต์อีกครั้ง ข้อเสียคือไม่แสดงหมายเลขบรรทัดในสคริปต์ที่พบข้อผิดพลาด นี่อาจเป็นความเจ็บปวดสักหน่อย แต่ข้อความแสดงข้อผิดพลาดนั้นมีความหมายดังนั้นคุณอาจจะทราบได้ว่าปัญหานั้นอยู่ที่ไหน

สำหรับคนที่ชอบแนวทางของ command-line โดยตรง



7

คุณเกือบจะใช้แล้ว

mysql> \. c:/nitm.sql;

คุณสามารถเข้าถึงความช่วยเหลือโดย

mysql> \?

1
มันใช้งานไม่ได้ เมื่อฉันใช้ mysql> \ C: /nitm.sql; มันโยนข้อผิดพลาดเช่นไม่สามารถเปิดไฟล์ 'c: \ nitm.sql;', ข้อผิดพลาด: 2
kushalbhaktajoshi

คุณเคยลองชุดรูปแบบนี้หรือไม่? แอปพลิเคชั่นบางตัวเคารพ C: \ nitm.sql
Lmwangi

โปรดทราบว่าไม่จำเป็นต้องใช้เครื่องหมายอัฒภาคในตอนท้าย ดังนั้นลบมัน ตัวเลือกอื่นคือ 'cd c:' จากนั้นลอง "\. nitm.sql"
Lmwangi

1
โปรดคิดก่อนพิมพ์ 'cd c:' เป็นคำสั่งสำหรับ DOS ที่ให้ไม่ใช่คอนโซล mySql
kushalbhaktajoshi

1
mysql> \. ~/Downloads/backups/file.sql ทำงานได้อย่างสมบูรณ์ภายใน mysql> และจาก terminal terminal coosalก็ใช้งานได้เช่นกัน
gmuhammad

6

สำหรับ localhost บน XAMPP เปิดหน้าต่าง cmd และพิมพ์

cd C:\xampp\mysql\bin
mysql.exe -u root -p

ความสนใจ! ไม่มีเซมิโคลอนหลัง -p ป้อนรหัสผ่านและประเภทของคุณ

use database_name;

เพื่อเลือกฐานข้อมูลที่คุณต้องการ

ตรวจสอบว่าโต๊ะของคุณอยู่ที่นั่นหรือไม่

show tables;

นำเข้าจากไฟล์ sql ของคุณ

source sqlfile.sql;

ฉันวางไฟล์ของฉันไว้ในตำแหน่ง C: \ xampp \ mysql \ bin เพื่อที่จะไม่มิกซ์กับตำแหน่งของไฟล์ sql


4

ลอง:

mysql -u username -p database_name < file.sql

ตรวจสอบตัวเลือก MySQL

หมายเหตุ: file.sqlมันจะดีกว่าที่จะใช้เส้นทางที่เต็มรูปแบบของไฟล์ของ


3

อย่าลืมที่จะใช้

charset utf8

หากไฟล์ sql ของคุณอยู่ใน utf-8 :)

ดังนั้นคุณต้องทำ:

cmd.exe

mysql -u root

mysql> charset utf8

mysql> ใช้ mydbname

mysql> source C: \ myfolder \ myfile.sql

โชคดี ))


3

ใน Linux ฉันไปที่ไดเรกทอรีที่มีไฟล์. sql ก่อนเริ่ม mysql ขณะนี้เคอร์เซอร์ระบบอยู่ในตำแหน่งเดียวกับไฟล์และคุณไม่จำเป็นต้องมีพา ธ ใช้ source myData.sql โดยที่วันที่ของฉันถูกแทนที่ด้วยชื่อไฟล์ของคุณ

cd whatever directory

mysql - p

เชื่อมต่อ targetDB

source myData.sql

เสร็จสิ้น


2

จากบรรทัดคำสั่ง (cmd.exe ไม่ใช่จากภายในเชลล์ mysql) ลองทำดังนี้:

type c:/nite.sql | mysql -uuser -ppassword dbname

ฉันยังไม่ได้สร้างรหัสผ่านใด ๆ สำหรับฐานข้อมูลจึงว่างในฟิลด์รหัสผ่าน และฉันได้ใช้ไวยากรณ์ข้างต้นเช่นนี้ c: /nitm.sql | mysql -u root -p nitm แต่ก็ไม่ได้ผล คุณช่วยฉันเพิ่มอีกได้ไหม?
kushalbhaktajoshi

การละเว้น -p ไม่ทำงานเช่นกัน ข้อผิดพลาดที่ทำให้เกิดข้อผิดพลาดเช่น 'c:' นี้ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ทำงานได้หรือไฟล์แบตช์
kushalbhaktajoshi

2

การถ่ายโอนข้อมูลของคุณมีคุณสมบัติที่ไม่รองรับเวอร์ชัน MySQL ของคุณหรือไม่? นอกจากนี้คุณยังสามารถลองลบ MySQL เริ่มต้น (และสิ้นสุด) แสดงความคิดเห็นคำสั่งตลาดหลักทรัพย์

ฉันไม่ทราบว่าการถ่ายโอนข้อมูลของคุณมาจาก MySQL เวอร์ชัน Linux หรือไม่?


ฉันได้ลบ mysql ที่แสดงความคิดเห็นในงบการเงิน แต่ก็ยังมีข้อผิดพลาดเกิดขึ้น
kushalbhaktajoshi

คุณสามารถลองล็อกอินเข้าสู่ MySQL command shell และใช้คำสั่งแล้ว: "source c: \ nite.sql" อย่าลืมเลือกฐานข้อมูลที่ถูกต้อง
Maickel

ฉันซาบซึ้งในความพยายามของคุณ ขอบคุณ
kushalbhaktajoshi

2

ฉันได้ติดตั้งเซิร์ฟเวอร์ wamp ของฉันในไดรฟ์ D: ดังนั้นคุณต้องไปที่เส้นทางต่อไปนี้จากบรรทัดคำสั่ง ur -> (และถ้าหากคุณติดตั้ง wamp ur ใน c: ไดรฟ์แล้วให้แทนที่ d: wtih c: here)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -u root -p password db_name < "d:\backupfile.sql"

นี่rootคือผู้ใช้รหัสผ่าน phpmyadmin ของฉัน คือรหัสผ่านสำหรับ phpmyadmin ดังนั้นหากคุณยังไม่ได้ตั้งรหัสผ่านใด ๆ สำหรับ root เพียงแค่ไม่มีประเภทในสถานที่นั้น db_name คือฐานข้อมูล (สำหรับฐานข้อมูลที่ใช้สำรองข้อมูล) ไฟล์ที่คุณต้องการสำรองข้อมูล ur ของฐานข้อมูล ur และคุณสามารถเปลี่ยนตำแหน่งไฟล์สำรอง (d: \ backupfile.sql) จากที่อื่นในคอมพิวเตอร์ของคุณ


1
mysql>c:/nitm.sql;

ที่จะเขียนผลลัพธ์ของคำสั่ง mysql ไปที่ 'nitm.sql;' (ควรทำอะไร ';') สมมติว่าคุณมีสำเนาของไฟล์ต้นฉบับ (ก่อนที่คุณจะเขียนทับ) จากนั้น:

mysql < c:/nitm.sql

มันไม่ได้ผลเช่นกัน มันโยนข้อผิดพลาดเช่นข้อผิดพลาด 1064 <42000>: คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ; ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชันเซิร์ฟเวอร์ MySql ของคุณเพื่อหาไวยากรณ์ที่ถูกต้องเพื่อใช้ใกล้กับ 'mysql <c: /nitm.sql' ที่บรรทัด 1
kushalbhaktajoshi

1

ส่งออกฐานข้อมูลเฉพาะ

 djimi:> mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT >ccr_kit_local.sql

สิ่งนี้จะส่งออกฐานข้อมูล CCR และ KIT ...

นำเข้าฐานข้อมูลที่ส่งออกทั้งหมดไปยังอินสแตนซ์ Mysql โดยเฉพาะ (คุณต้องเป็นที่ที่ไฟล์ดัมพ์ของคุณอยู่)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

0

ใน Windows OS คำสั่งต่อไปนี้ใช้งานได้สำหรับฉัน

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

ไม่มีเครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายคำพูดคู่รอบชื่อไฟล์ เส้นทางจะมี '/' แทน '\'


0

สำหรับคนที่คุณต้องดิ้นรนทำสิ่งนี้ให้สำเร็จลองทำทุกคำตอบที่เป็นไปได้ นี่คือสิ่งที่ใช้ได้กับฉันใน VPS ที่ใช้ Windows 2012 R2:

  1. วางไฟล์ sql ของคุณไม่ว่าที่ใดก็ตามที่ bin เก็บไว้สำหรับฉันจะอยู่ที่ C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. พรอมต์คำสั่งเปิด windows (cmd)

  3. วิ่ง C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. ใส่รหัสผ่านของคุณ
  5. เรียกใช้คำสั่งuse [database_name];
  6. นำเข้าไฟล์ของคุณด้วยแหล่งคำสั่ง C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

มันทำเพื่อฉันตามที่ทุกอย่างอื่นล้มเหลว มันอาจช่วยคุณได้เช่นกัน

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