SQL dosyasını mysql dosyasına aktar


191

Adlı bir veritabanım var nitm. Orada hiç masa oluşturmadım. Ama veritabanı için gerekli tüm verileri içeren bir SQL dosyası var. Dosyasıdır nitm.sqliçinde olan C:\ drive. Bu dosyanın boyutu yaklaşık 103 MB'dir. Wamp sunucusu kullanıyorum.

Dosyayı içe aktarmak için MySQL konsolunda aşağıdaki sözdizimini kullandım:

mysql>c:/nitm.sql;

Ama bu işe yaramadı.



Yanıtlar:


406

MySQL konsolundan:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


göreli bir yola atıfta bulunuyorsanız, yoldan önce eğik çizgi olmadığından emin olun ... bunu fark etmem biraz zaman aldı! lol


36
Göreli başvuru yapıyorsanız, yoldan önce eğik çizgiye ihtiyacınız yoktur. Kökten gidiyorsanız, yani/home/user/file.sql
Wes Johnson

5
Ne yazık ki favorilere cevap eklemenin yolu yok :(
baldrs

4
Chrome'da bunlara yer işareti denir ve yalnızca adres çubuğundaki yıldızı tıklayabilirsiniz;)
Andrew

2
@ ArseniuszŁozicki soruyu ekleyin ve cevabınıza ulaşabilirsiniz :) ne yaptığım.
mandza

2
Sadece bu cevaba eklemek için path/to/file.sqlmysql istemcisinin bulunduğu yerel dosya sistemi yolu . MySQL sunucusunun yolun sunucu tarafında olmasını beklediği zamanlar vardır, SELECT ... INTO OUTFILEbu da dosyayı MySQL sunucusundaki yola bırakır!
Devy

90

Sonunda, sorunu çözdüm. Nitm.sql dosyasını mysql klasörünün bin dosyasına yerleştirdim ve aşağıdaki sözdizimini kullandım.

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

Ve bu işe yaradı.


8
Bu OP'nin istediği gibi mysql konsolundan değil, bir konsoldan mysql'e. Robert Anthony Tribiana'nın cevabı, mysql konsolundan nasıl yapılacağını açıklıyor.
halfpastfour.am

Sorunu çözmenin tam yolu bu değil, bir çözüm değil.
Ashish Ratan

4
Bunu cevaplayan OP olduđunu biliyor musunuz?
Wes

MySQL sizin için bir parola gerekiyorsa, o zaman yöntem işe yaramazsa, @ d -_- b
shellbye

52

Eğer wamp kullanıyorsanız bunu deneyebilirsiniz. Sadece yazın use your_Database_nameilk.

  1. Wamp sunucusu simgenizi tıklayın, ardından arayın ve MYSQL > MSQL Consoleçalıştırın.

  2. Parolanız yoksa enter tuşuna basın ve şunu yazın:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Parolanız varsa, bir parola girmeniz istenir. Önce şifrenizi girin ve şunu yazın:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file gibi görünmeli C:\mydb.sql

bu yüzden yorum mysql> kaynak C: \ mydb.sql;

Sql dökümü ithal Bu tür BÜYÜK SQL DOSYA için çok yararlıdır.

Dosyamı mydb.sqdizine kopyaladım C:. Çalıştırmak için büyük C: olmalıdır

ve bu kadar.


1
Gösterilen kod, MySQL çalıştıran ve MySQL'e bir terminal veya konsol aracılığıyla erişebileceğiniz herhangi bir ortamdan çalışırken WAMP'a özgü görünüyor.
halfpastfour.am

26

Windows'ta, yukarıdaki öneri size bir hata veriyorsa (dosya bulunamadı veya bilinmeyen db) eğik çizgileri iki katına çıkarmak isteyebilirsiniz:

MySQL konsolunda:

mysql> use DATABASE_NAME;

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

1
Tek eğik çizgi Windows makinemde benim için çalıştı.
Manoj Shrestha

17

Tamam, Linux kullanıyorum ama bunun Windows için de geçerli olduğunu düşünüyorum. Bunu doğrudan komut isteminden yapabilirsiniz

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

Veya mysql isteminden şunları kullanabilirsiniz:

mysql>source sqlfilename.sql

Ancak bu yaklaşımların her ikisinin de gösterdikleri sonuçlarda kendi yararları vardır. İlk yaklaşımda, komut dosyası bir hatayla karşılaşır karşılaşmaz kapanır. Ve daha iyi bölüm, hatanın oluştuğu kaynak dosyada tam satır numarasını söylemesidir. Ancak, SADECE hataları görüntüler. Herhangi bir hatayla karşılaşmadıysa, komut dosyalarında HİÇBİR ŞEY görüntülenir. Bu biraz sinir bozucu olabilir. Çünkü çoğu zaman bir komut yığını içeren bir komut dosyası çalıştırıyorsunuz.

Şimdi ikinci yaklaşım (mysql isteminden) komut dosyasındaki her farklı MySQL komutu için bir mesaj görüntüleme avantajına sahiptir. Hatalarla karşılaşırsa, mysql hata mesajını görüntüler, ancak komut dosyaları aracılığıyla devam eder. Bu iyi olabilir, çünkü komut dosyasını tekrar çalıştırmadan önce geri dönüp tüm hataları düzeltebilirsiniz. Dezavantajı, hatalarda karşılaşılan komut dosyasında satır numaralarını GÖSTERMEMEKTEDİR. Bu biraz acı olabilir. Ancak hata mesajları açıklayıcıdır, böylece sorunun nerede olduğunu anlayabilirsiniz.

Birincisi, doğrudan OS-komut satırı yaklaşımını tercih ediyorum.


9

Xampp kullanıyorsanız

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

7

Neredeyse kullanıyorsunuz

mysql> \. c:/nitm.sql;

Yardıma şu adresten de erişebilirsiniz:

mysql> \?

1
Bu işe yaramadı. MySQL kullandığımda> \. c: /nitm.sql; , 'c: \ nitm.sql;' dosyası açılamadı, hata: 2
kushalbhaktajoshi

Bunun varyasyonlarını denediniz mi? Bazı uygulamalar C: \ nitm.sql
Lmwangi

Ayrıca sondaki noktalı virgülün gerekli olmadığını unutmayın. Yani kaldır. Başka bir seçenek 'cd c:' sonra "\. Nitm.sql" komutunu deneyin
Lmwangi

1
Lütfen yazmadan önce düşünün. 'cd c:' mySql konsolu değil DOS komut isteminin komutudur.
kushalbhaktajoshi

1
mysql> \. ~/Downloads/backups/file.sql mysql içinde mükemmel çalıştı> ve terminal coosalcevap da çalıştı.
gmuhammad

6

XAMPP üzerindeki localhost için. Bir cmd penceresi açın ve yazın

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

Dikkat! -P'den sonra noktalı virgül yok Parolanızı girin ve yazın

use database_name;

ihtiyacınız olan veritabanını seçin.

Masanızın orada olup olmadığını kontrol edin

show tables;

Sql dosyanızdan içe aktarın

source sqlfile.sql;

Sql dosyasının konumlarıyla karıştırmamak için dosyamı C: \ xampp \ mysql \ bin konumuna koydum.



3

Kullanmayı unutma

charset utf8

Sql dosyanız utf-8 ise :)

Yani yapmanız gerekenler:

cmd.exe

mysql -u kökü

mysql> karakter seti utf8

mysql> mydbname kullan

mysql> kaynak C: \ klasörüm \ klasörüm.sql

İyi şanslar ))


3

Linux'ta mysql'yi başlatmadan önce .sql dosyasını içeren dizine geçtim. Sistem imleci artık dosya ile aynı konumda ve yola ihtiyacınız olmayacak. MyData.sql kaynağını kullanın, burada tarihim dosyanızın adıyla değiştirilir.

cd whatever directory

mysql - p

targetDB'yi bağla

source myData.sql

Bitti


2

komut satırından (cmd.exe, mysql kabuğundan değil) şöyle bir şey deneyin:

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

Veritabanı için herhangi bir şifre oluşturmadım, bu yüzden şifre alanında boş. Ve bu c gibi yukarıdaki sözdizimini kullandım: /nitm.sql | mysql -u root -p nitm ama bu da işe yaramadı. Bu konuda bana biraz daha yardım edebilir misin?
kushalbhaktajoshi

-P işareti de işe yaramadı. 'C:' gibi bu hata, dahili veya harici komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor.
kushalbhaktajoshi

2

Dökümünüz MySQL sürümünüzde desteklenmeyen özellikler içeriyor mu? Ayrıca MySQL yorumlu SET deyimlerini başlatmayı (ve sonlandırmayı) da deneyebilirsiniz.

Dökümünüzün MySQL'in Linux sürümünden (satır sonları) gelip gelmediğini bilmiyorum?


Zaten yorum mysql SET-ifadeleri sildim. Ancak yine de hata oluşur.
kushalbhaktajoshi

MySQL komut kabuğuna giriş yapmayı ve use then ifadesini kullanmayı deneyebilirsiniz: "source c: \ nite.sql". Doğru veritabanını seçmeyi unutmayın.
Maickel

Çabalarınızı gerçekten takdir ediyorum. Teşekkürler.
kushalbhaktajoshi

2

D: sürücüsüne wamp sunucumu yükledim, böylece u komut satırından aşağıdaki yola gitmek zorundasınız -> (ve c: sürücüsüne ur wamp'ı yüklediyseniz, sadece d: wtih: burada değiştirin)

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"

burada kök benim phpmyadmin şifresi kullanıcı phpmyadmin için şifre yani u kök için herhangi bir şifre ayarlanmamışsa o yerde hiçbir şey türü, db_name veritabanı (hangi veritabanı ur yedek alarak), backupfile.sql olduğunu ur veritabanının ur yedeklemesini istediğiniz dosya ve u yedek dosya konumunu da (d: \ backupfile.sql) bilgisayarınızdaki diğer herhangi bir yere değiştirebilirsiniz


1
mysql>c:/nitm.sql;

Bu mysql komutunun çıktısını 'nitm.sql;' (';' Ne yapmalı?) Orijinal dosyanın bir kopyasına sahip olduğunuzu varsayarsak (üzerine yazmadan önce):

mysql < c:/nitm.sql

Bu da işe yaramadı. ERROR 1064 <42000> gibi bir hata attı: SQL sözdiziminizde bir hata var; Manuel kontrol etmenizi yakın kullanım hakkı sözdizimi için MySQL sunucu sürümüne karşılık gelir: line 1 'mysql <c /nitm.sql'
kushalbhaktajoshi

1

Belirli Veri Tabanlarını Dışa Aktar

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

bu CCR ve KIT veritabanlarını dışa aktarır ...

Tüm Dışa Aktarılan DB'yi Belirli Mysql Örneğine Aktar (Döküm dosyanızın olduğu yerde olmalısınız)

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

0

Windows işletim sisteminde aşağıdaki komutlar benim için çalışıyor.

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

Dosya adında tek tırnak veya çift tırnak yok. Yol '\' yerine '/' içerecektir.


0

Bunun için SO üzerinde bulabileceğiniz her olası cevabı denemekle mücadele edenler. Windows 2012 R2 çalıştıran bir VPS'de benim için işe yarayanlar:

  1. Sql dosyanızı bin benim için olduğu yere yerleştirin C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Windows komut istemini aç (cmd)

  3. Çalıştırmak C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Şifrenizi girin
  5. Çalıştır komutu use [database_name];
  6. Dosyanızı komut kaynağıyla içe aktarın C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Diğer her şey başarısız olduğu için benim için yaptı. Size de yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.