Nhập tệp SQL vào mysql


190

Tôi có một cơ sở dữ liệu được gọi là nitm. Tôi chưa tạo ra bất kỳ bảng nào ở đó. Nhưng tôi có một tệp SQL chứa tất cả các dữ liệu cần thiết cho cơ sở dữ liệu. Các tập tin nitm.sqlđược trong C:\ drive. Tập tin này có kích thước khoảng 103 MB. Tôi đang sử dụng máy chủ wamp.

Tôi đã sử dụng cú pháp sau trong bảng điều khiển MySQL để nhập tệp:

mysql>c:/nitm.sql;

Nhưng điều này đã không làm việc.



Câu trả lời:


406

Từ bảng điều khiển mysql:

mys> use DATABASE_NAME;

mys> source path/to/file.sql;


hãy chắc chắn rằng không có dấu gạch chéo trước đường dẫn nếu bạn đang đề cập đến một đường dẫn tương đối ... tôi phải mất một thời gian để nhận ra điều đó! cười lớn


36
Bạn không cần một dấu gạch chéo trước đường dẫn nếu bạn đang tạo một tham chiếu tương đối. Nếu bạn đang đi từ gốc, bạn sẽ, tức là/home/user/file.sql
Wes Johnson

5
Thật đáng tiếc không có cách nào để thêm câu trả lời cho mục yêu thích :(
baldrs 17/12/13

4
Trong Chrome, chúng được gọi là dấu trang và bạn chỉ cần nhấp vào ngôi sao trên thanh địa chỉ;)
Andrew

2
@ ArseniuszŁozicki thêm câu hỏi và bạn sẽ có thể đạt được câu trả lời :) đó là những gì tôi làm.
mandza

2
Chỉ cần thêm vào câu trả lời này path/to/file.sqllà đường dẫn hệ thống tệp cục bộ nơi máy khách mysql đang ở. Đôi khi máy chủ MySQL mong muốn đường dẫn ở phía máy chủ, IE SELECT ... INTO OUTFILEsẽ thả tệp vào đường dẫn trên máy chủ MySQL!
Devy

90

Cuối cùng, tôi đã giải quyết vấn đề. Tôi đã đặt tệp `nitm.sql` trong tệp` bin` của thư mục` mysql` và sử dụng cú pháp sau.

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

Và điều này đã làm việc.


8
Đây không phải là từ bảng điều khiển mysql như OP yêu cầu, mà là từ bảng điều khiển thành mysql. Câu trả lời từ Robert Anthony Tribiana mô tả cách thực hiện từ bảng điều khiển mysql.
Halfpastfour.am

Đây không phải là cách chính xác để giải quyết vấn đề, nó không phải là một giải pháp.
Ashish Ratan

4
Các bạn biết rằng đây là OP đã trả lời này?
Wes

Nếu mysql của bạn cần mật khẩu, thì phương thức sẽ không hoạt động, bạn cần câu trả lời hàng đầu của @d -_- b
shellbye

52

Nếu bạn đang sử dụng wamp, bạn có thể thử điều này. Chỉ cần gõ use your_Database_nameđầu tiên.

  1. Nhấp vào biểu tượng máy chủ wamp của bạn sau đó tìm kiếm MYSQL > MSQL Consolesau đó chạy nó.

  2. Nếu bạn không có mật khẩu, chỉ cần nhấn enter và gõ:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Nếu bạn có mật khẩu, bạn sẽ hứa nhập mật khẩu. Nhập mật khẩu của bạn trước sau đó gõ:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file nên trông như C:\mydb.sql

vì vậy phần thưởng là mysql> nguồn C: \ mydb.sql;

Kiểu kết xuất sql này rất hữu ích cho BIG SQL FILE.

Tôi đã sao chép tập tin của mình mydb.sqvào thư mục C:. Nó phải là chữ C: để chạy

và đó là nó.


1
Câu trả lời này có vẻ cụ thể WAMP trong khi mã hiển thị hoạt động từ bất kỳ môi trường nào chạy MySQL nơi bạn có thể truy cập MySQL thông qua thiết bị đầu cuối hoặc bảng điều khiển.
Halfpastfour.am

26

Trong các cửa sổ, nếu đề xuất ở trên cung cấp cho bạn một lỗi (không tìm thấy tệp hoặc db không xác định), bạn có thể muốn tăng gấp đôi dấu gạch chéo về phía trước:

Trong bảng điều khiển mysql:

mysql> use DATABASE_NAME;

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

1
Dấu gạch chéo đơn làm việc cho tôi trong máy Windows của tôi.
Manoj Shrestha

17

Ok, tôi đang sử dụng Linux nhưng tôi nghĩ điều này cũng đúng với Windows. Bạn có thể làm điều này trực tiếp từ dấu nhắc lệnh

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

Hoặc từ trong dấu nhắc mysql, bạn có thể sử dụng:

mysql>source sqlfilename.sql

Nhưng cả hai phương pháp này đều có lợi ích riêng trong kết quả mà họ hiển thị. Trong cách tiếp cận đầu tiên, tập lệnh thoát ngay khi gặp lỗi. Và phần tốt hơn, là nó cho bạn biết số dòng chính xác trong tệp nguồn nơi xảy ra lỗi. Tuy nhiên, nó chỉ hiển thị lỗi. Nếu nó không gặp phải bất kỳ lỗi nào, các tập lệnh sẽ hiển thị KHÔNG CÓ. Mà có thể là một chút đáng sợ. Bởi vì bạn thường xuyên chạy một tập lệnh với cả đống lệnh.

Bây giờ cách tiếp cận thứ hai (từ trong dấu nhắc mysql) có lợi ích là nó hiển thị một thông báo cho mỗi lệnh MySQL khác nhau trong tập lệnh. Nếu nó gặp lỗi, nó sẽ hiển thị thông báo lỗi mysql nhưng vẫn tiếp tục thông qua các tập lệnh. Điều này có thể tốt, bởi vì sau đó bạn có thể quay lại và sửa tất cả các lỗi trước khi bạn chạy lại tập lệnh. Nhược điểm là nó KHÔNG hiển thị số dòng trong tập lệnh nơi gặp lỗi. Điều này có thể là một chút đau đớn. Nhưng các thông báo lỗi là mô tả để bạn có thể tìm ra vấn đề ở đâu.

Tôi, đối với một, thích cách tiếp cận dòng lệnh trực tiếp từ hệ điều hành.


9

Nếu bạn đang sử dụng xampp

C:\xampp\mysql\bin\mysql -uroot -p nitm < nitm.sql

7

Bạn gần như sử dụng

mysql> \. c:/nitm.sql;

Bạn cũng có thể truy cập trợ giúp bằng cách

mysql> \?

1
Điều này đã không làm việc. Khi tôi sử dụng mysql> \. c: /nitm.sql; , nó đã ném lỗi như Không thể mở tệp 'c: \ nitm.sql;', lỗi: 2
kushalbhaktajoshi

Bạn đã thử biến thể của điều này? Một số ứng dụng tôn trọng C: \ nitm.sql
Lmwangi

Cũng lưu ý dấu chấm phẩy ở cuối là không bắt buộc. Vì vậy, loại bỏ nó. Một tùy chọn khác là 'cd c:', sau đó thử "\. Nitm.sql"
Lmwangi

1
Hãy suy nghĩ trước khi bạn gõ. 'cd c:' là lệnh cho dấu nhắc DOS không phải bảng điều khiển mySql.
kushalbhaktajoshi

1
mysql> \. ~/Downloads/backups/file.sql hoạt động hoàn hảo trong mysql> và từ coosalcâu trả lời đầu cuối cũng hoạt động.
gmuhammad

6

Đối với localhost trên XAMPP. Mở một cửa sổ cmd và gõ

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

Chú ý! Không có dấu chấm phẩy sau -p Nhập mật khẩu của bạn và gõ

use database_name;

để chọn cơ sở dữ liệu bạn cần.

Kiểm tra xem bàn của bạn có ở đó không

show tables;

Nhập từ tệp sql của bạn

source sqlfile.sql;

Tôi đã đặt tệp của mình vào vị trí C: \ xampp \ mysql \ bin để không trộn lẫn với các vị trí của tệp sql.


4

Thử:

mysql -u username -p database_name < file.sql

Kiểm tra tùy chọn MySQL .

Lưu ý: Tốt hơn là sử dụng đường dẫn đầy đủ của tệp SQL file.sql.


3

Đừng quên sử dụng

charset utf8

Nếu tập tin sql của bạn ở utf-8 :)

Vì vậy, bạn cần phải làm:

cmd.exe

gốc mys -u

mysql bảng mã utf8

mysql sử dụng mydbname

mysql nguồn C: \ myfolder \ myfile.sql

Chúc may mắn ))


3

Trong Linux, tôi đã điều hướng đến thư mục chứa tệp .sql trước khi bắt đầu mysql. Con trỏ hệ thống hiện ở cùng vị trí với tệp và bạn sẽ không cần đường dẫn. Sử dụng nguồn myData.sql trong đó ngày của tôi được thay thế bằng tên của tệp của bạn.

cd whatever directory

mysql - p

kết nối targetDB

source myData.sql

Làm xong


2

từ dòng lệnh (cmd.exe, không phải từ bên trong shell mysql) hãy thử một cái gì đó như:

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

Tôi chưa tạo bất kỳ mật khẩu nào cho cơ sở dữ liệu để nó trống trong trường mật khẩu. Và tôi đã sử dụng cú pháp trên như thế này c: /nitm.sql | mysql -u root -p nitm nhưng điều này cũng không hoạt động. Bạn có thể giúp tôi với một số điều này thêm?
kushalbhaktajoshi

Bỏ qua -p cũng không hoạt động. Lỗi này đã ném như 'c:' không được nhận dạng như một lệnh bên trong hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó.
kushalbhaktajoshi

2

Kết xuất của bạn có chứa các tính năng không được hỗ trợ trong phiên bản MySQL của bạn không? Bạn cũng có thể thử loại bỏ các câu lệnh SET bắt đầu (và kết thúc).

Tôi không biết liệu kết xuất của bạn đến từ phiên bản Linux của MySQL (kết thúc dòng)?


Tôi đã xóa các câu lệnh SET nhận xét mysql. Nhưng vẫn xảy ra lỗi.
kushalbhaktajoshi

Bạn có thể thử đăng nhập vào shell lệnh MySQL và câu lệnh sử dụng sau đó: "source c: \ nite.sql". Đừng quên chọn cơ sở dữ liệu chính xác.
Maickel

Tôi thực sự đánh giá cao nỗ lực của bạn. Cảm ơn.
kushalbhaktajoshi

2

Tôi đã cài đặt máy chủ wamp của mình trong ổ D: vì vậy bạn phải đi đến đường dẫn sau từ dòng lệnh ur -> (và nếu bạn đã cài đặt ur wamp trong c: drive thì chỉ cần thay thế d: wtih c: tại đây)

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"

Ở đây root là người dùng mật khẩu phpmyadmin của tôi là mật khẩu cho phpmyadmin, vì vậy nếu bạn chưa đặt bất kỳ mật khẩu nào cho root thì không có gì ở đó, db_name là cơ sở dữ liệu (mà cơ sở dữ liệu của bạn đang sao lưu), backupfile.sql là tệp mà bạn muốn sao lưu cơ sở dữ liệu của bạn và bạn cũng có thể thay đổi vị trí tệp sao lưu (d: \ backupfile.sql) từ bất kỳ nơi nào khác trên máy tính của bạn


1
mysql>c:/nitm.sql;

Điều đó sẽ ghi đầu ra của lệnh mysql thành 'nitm.sql;' (Việc ';' phải làm là gì?) Giả sử bạn đã có một bản sao của tệp gốc (trước khi bạn ghi đè lên nó) thì:

mysql < c:/nitm.sql

Điều này cũng không hoạt động. Nó đã ném lỗi như ERROR 1064 <42000>: Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySql của bạn để biết đúng cú pháp để sử dụng gần 'mysql <c: /nitm.sql' ở dòng 1
kushalbhaktajoshi

1

Xuất dữ liệu đặc biệt

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

điều này sẽ xuất cơ sở dữ liệu CCR và KIT ...

Nhập tất cả DB đã xuất vào trường hợp đặc biệt Mysql (Bạn phải ở nơi tệp kết xuất của bạn)

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

0

Trong hệ điều hành Windows, các lệnh sau hoạt động với tôi.

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

Không có dấu ngoặc đơn hoặc dấu ngoặc kép xung quanh tên tệp. Đường dẫn sẽ chứa '/' thay vì '\'.


0

Đối với những bạn đang vật lộn với việc này, hãy thử mọi câu trả lời có thể có trên SO. Đây là những gì làm việc cho tôi trên VPS chạy Windows 2012 R2:

  1. Đặt tệp sql của bạn bất cứ nơi nào thùng cho tôi nó nằm ở C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Mở dấu nhắc lệnh windows (cmd)

  3. Chạy C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Nhập mật khẩu của bạn
  5. Chạy lệnh use [database_name] ;
  6. Nhập tệp của bạn với nguồn lệnh C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Nó đã làm điều đó cho tôi khi mọi thứ khác đã thất bại. Nó cũng có thể giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.