Impor file SQL ke mysql

191

Saya memiliki database yang disebut nitm. Saya belum membuat tabel apa pun di sana. Tapi saya punya file SQL yang berisi semua data yang diperlukan untuk database. File nitm.sqlyang ada di C:\ drive. File ini memiliki ukuran sekitar 103 MB. Saya menggunakan server wamp.

Saya telah menggunakan sintaks berikut di konsol MySQL untuk mengimpor file:

mysql>c:/nitm.sql;

Tapi ini tidak berhasil.

kushalbhaktajoshi
sumber

Jawaban:

406

Dari konsol mysql:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


pastikan tidak ada garis miring sebelum jalan jika Anda merujuk ke jalur relatif ... butuh beberapa saat untuk menyadari itu! lol

d -_- b
sumber
36
Anda tidak perlu garis miring sebelum jalan jika Anda membuat referensi relatif. Jika Anda pergi dari root Anda akan, yaitu/home/user/file.sql
Wes Johnson
5
Sayang sekali tidak ada cara untuk menambahkan jawaban ke favorit :(
botak
4
Di Chrome mereka disebut bookmark, dan Anda bisa mengklik bintang di bilah alamat;)
Andrew
2
@ ArseniuszŁozicki menambahkan pertanyaan dan Anda akan dapat mencapai jawaban :) itulah yang saya lakukan.
mandza
2
Hanya untuk menambahkan jawaban ini bahwa path/to/file.sqlini adalah jalur sistem file lokal di mana klien mysql berada. Ada kalanya server MySQL mengharapkan path berada di sisi server, SELECT ... INTO OUTFILEyaitu IE yang menjatuhkan file ke path di server MySQL!
Devy
90

Akhirnya, saya memecahkan masalah. Saya menempatkan file `nitm.sql` di file` bin` dari folder `mysql` dan menggunakan sintaks berikut.

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

Dan ini berhasil.

kushalbhaktajoshi
sumber
8
Ini bukan dari konsol mysql seperti yang diminta OP, tetapi dari konsol ke mysql. Jawaban dari Robert Anthony Tribiana menggambarkan bagaimana melakukannya dari konsol mysql.
halfpastfour.am
Ini bukan cara yang tepat untuk menyelesaikan masalah, itu bukan solusi.
Ashish Ratan
4
Kalian tahu bahwa ini adalah OP yang menjawab ini?
Wes
Jika mysql Anda memerlukan kata sandi, maka metode tidak akan berfungsi, Anda memerlukan jawaban teratas dari @d -_- b
shellbye
52

Jika Anda menggunakan wamp, Anda dapat mencoba ini. Cukup ketik use your_Database_namedulu.

  1. Klik ikon wamp server Anda lalu cari MYSQL > MSQL Consolekemudian jalankan.

  2. Jika Anda tidak memiliki kata sandi, cukup tekan enter dan ketik:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Jika Anda memiliki kata sandi, Anda akan diminta untuk memasukkan kata sandi. Masukkan kata sandi Anda terlebih dahulu kemudian ketik:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file akan terlihat seperti C:\mydb.sql

jadi yang terpuji adalah mysql> sumber C: \ mydb.sql;

Jenis impor sql dump ini sangat membantu untuk FILE SQL BESAR.

Saya menyalin file saya mydb.sqke direktori C:. Ini harus menjadi modal C: untuk menjalankan

dan hanya itu.

Robert Anthony Tribiana
sumber
1
Jawaban ini tampaknya khusus WAMP sementara kode yang ditunjukkan bekerja dari lingkungan yang menjalankan MySQL di mana Anda dapat mengakses MySQL melalui terminal atau konsol.
halfpastfour.am
26

Di windows, jika saran di atas memberi Anda kesalahan (file tidak ditemukan atau db tidak dikenal), Anda mungkin ingin menggandakan garis miring ke depan:

Di konsol mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;
pengguna3219217
sumber
1
Slash maju tunggal bekerja untuk saya di mesin Windows saya.
Manoj Shrestha
17

Ok jadi, saya menggunakan Linux tetapi saya pikir ini berlaku untuk Windows juga. Anda dapat melakukan ini baik langsung dari command prompt

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

Atau dari dalam prompt mysql, Anda dapat menggunakan:

mysql>source sqlfilename.sql

Namun kedua pendekatan ini memiliki manfaatnya sendiri dalam hasil yang ditampilkan. Dalam pendekatan pertama, skrip keluar segera setelah menemukan kesalahan. Dan bagian yang lebih baik, adalah memberitahu Anda nomor baris yang tepat di file sumber tempat kesalahan terjadi. Namun, ini HANYA menampilkan kesalahan. Jika tidak menemukan kesalahan, skrip menampilkan NOTHING. Yang bisa sedikit menakutkan. Karena Anda paling sering menjalankan skrip dengan setumpuk perintah.

Sekarang pendekatan kedua (dari dalam prompt mysql) memiliki manfaat yang menampilkan pesan untuk setiap perintah MySQL yang berbeda dalam skrip. Jika menemui kesalahan, ini akan menampilkan pesan kesalahan mysql tetapi terus berlanjut melalui skrip. Ini bagus, karena Anda dapat kembali dan memperbaiki semua kesalahan sebelum Anda menjalankan skrip lagi. Kelemahannya adalah bahwa ia TIDAK menampilkan nomor baris dalam skrip tempat kesalahan ditemukan. Ini bisa sedikit menyakitkan. Tetapi pesan kesalahannya bersifat deskriptif sehingga Anda mungkin bisa mencari tahu di mana masalahnya.

Saya, misalnya, lebih memilih pendekatan jalur langsung-dari-OS-perintah.

peterb
sumber
9

Jika Anda menggunakan xampp

C:\xampp\mysql\bin\mysql -uroot -p nitm < nitm.sql
Nanhe Kumar
sumber
7

Anda hampir sampai menggunakannya

mysql> \. c:/nitm.sql;

Anda juga dapat mengakses bantuan dengan

mysql> \?
Lmwangi
sumber
1
Ini tidak berhasil. Ketika saya menggunakan mysql> \. c: /nitm.sql; , ia melempar kesalahan seperti Gagal membuka file 'c: \ nitm.sql;', error: 2
kushalbhaktajoshi
Sudahkah Anda mencoba variasi ini? Beberapa aplikasi menghargai C: \ nitm.sql
Lmwangi
Perhatikan juga titik koma di bagian akhir tidak diperlukan. Jadi hapus saja. Opsi lain adalah 'cd c:' lalu coba "\. Nitm.sql"
Lmwangi
1
Tolong pikirkan sebelum Anda mengetik. 'cd c:' adalah perintah untuk DOS prompt bukan konsol mySql.
kushalbhaktajoshi
1
mysql> \. ~/Downloads/backups/file.sql bekerja dengan sempurna di mysql> dan dari terminal coosalanswer berfungsi juga.
gmuhammad
6

Untuk localhost di XAMPP. Buka jendela cmd dan ketik

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

Perhatian! Tidak ada titik koma setelah -p Masukkan kata sandi Anda dan ketik

use database_name;

untuk memilih database yang Anda butuhkan.

Periksa apakah meja Anda ada di sana

show tables;

Impor dari file sql Anda

source sqlfile.sql;

Saya telah meletakkan file saya di C: \ xampp \ mysql \ bin lokasi agar tidak bercampur dengan lokasi file sql.

Adrian P.
sumber
4

Mencoba:

mysql -u username -p database_name < file.sql

Periksa Opsi MySQL .

Catatan: Lebih baik menggunakan path lengkap file SQL file.sql.

Akshay Pethani
sumber
3

Jangan lupa gunakan

charset utf8

Jika file sql Anda di utf-8 :)

Jadi yang perlu Anda lakukan:

cmd.exe

root mysql -u

mysql> charset utf8

mysql> gunakan mydbname

mysql> sumber C: \ myfolder \ myfile.sql

Semoga berhasil ))

Олег Всильдеревьев
sumber
3

Di Linux saya menavigasi ke direktori yang berisi file .sql sebelum memulai mysql. Kursor sistem sekarang berada di lokasi yang sama dengan file dan Anda tidak perlu path. Gunakan sumber myData.sql di mana tanggal saya diganti dengan nama file Anda.

cd whatever directory

mysql - p

hubungkan targetDB

source myData.sql

Selesai

Robert Quinn
sumber
2

dari baris perintah (cmd.exe, bukan dari dalam mysql shell) coba sesuatu seperti:

type c:/nite.sql | mysql -uuser -ppassword dbname
Omry Yadan
sumber
Saya belum membuat kata sandi untuk basis data sehingga kosong di bidang kata sandi. Dan saya telah menggunakan sintaks di atas seperti ini c: /nitm.sql | mysql -u root -p nitm tapi ini juga tidak berhasil. Bisakah Anda membantu saya dengan ini lagi?
kushalbhaktajoshi
Menghilangkan -p tidak berhasil juga. Kesalahan melempar seperti 'c:' ini tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan, atau file batch.
kushalbhaktajoshi
2

Apakah dump Anda mengandung fitur yang tidak didukung di versi MySQL Anda? Anda juga dapat mencoba untuk menghapus pernyataan SET yang dimulai (dan diakhiri) MySQL.

Saya tidak tahu apakah dump Anda berasal dari versi Linux MySQL (akhir baris)?

Maickel
sumber
Saya sudah menghapus pernyataan SET mysql yang berkomentar. Namun tetap saja kesalahan terjadi.
kushalbhaktajoshi
Anda dapat mencoba masuk ke shell perintah MySQL dan gunakan pernyataan kemudian: "source c: \ nite.sql". Jangan lupa untuk memilih basis data yang benar.
Maickel
Saya sangat menghargai upaya Anda. Terima kasih.
kushalbhaktajoshi
2

Saya telah menginstal server wamp di drive D: jadi Anda harus pergi ke jalur berikut dari baris perintah ur -> (dan jika Anda telah menginstal server w di drive c: drive, maka ganti saja d: wtih c: di sini)

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"

di sini root adalah pengguna kata sandi phpmyadmin saya adalah kata sandi untuk phpmyadmin jadi jika Anda belum menetapkan kata sandi untuk root hanya ketik apa pun di tempat itu, db_name adalah basis data (untuk database mana Anda mengambil cadangan), backupfile.sql adalah file dari mana Anda ingin cadangan dari database Anda dan Anda juga dapat mengubah lokasi file cadangan (d: \ backupfile.sql) dari ke tempat lain di komputer Anda

Sachin
sumber
1
mysql>c:/nitm.sql;

Itu akan menulis output dari perintah mysql ke 'nitm.sql;' (Apa yang harus dilakukan dengan ';'?) Dengan asumsi Anda memiliki salinan file asli (sebelum Anda menimpanya) maka:

mysql < c:/nitm.sql
symcbean
sumber
Ini juga tidak berhasil. Itu melempar kesalahan seperti ERROR 1064 <42000>: Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySql Anda untuk sintaks yang tepat untuk digunakan di dekat 'mysql <c: /nitm.sql' di baris 1
kushalbhaktajoshi
1

Ekspor basis data tertentu

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

ini akan mengekspor basis data CCR dan KIT ...

Impor Semua DB yang Diekspor ke Instance Mysql Khusus (Anda harus berada di tempat file dump Anda)

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

Di OS Windows, perintah berikut ini berfungsi untuk saya.

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

Tidak ada tanda kutip tunggal atau tanda kutip ganda di sekitar nama file. Path akan berisi '/' bukan '\'.

Pabitra Dash
sumber
0

Bagi Anda yang kesulitan menyelesaikan ini mencoba setiap jawaban yang mungkin Anda dapat temukan di SO. Inilah yang berhasil bagi saya di VPS yang menjalankan Windows 2012 R2:

  1. Tempatkan file sql Anda di mana pun bin berada bagi saya C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Buka command prompt windows (cmd)

  3. Lari C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Masukkan kata sandi Anda
  5. Jalankan perintah use [database_name] ;
  6. Impor file Anda dengan sumber perintah C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Itu melakukannya untuk saya karena semuanya gagal. Ini mungkin membantu Anda juga.

pengguna45678
sumber