如何轻松地将多个sql文件导入MySQL数据库?

时间:2012-01-25 09:14:10

标签: mysql import

我有几个sql个文件,我想将所有这些文件一次导入到MySQL数据库中。

我转到PHPMyAdmin,访问数据库,点击import,选择一个文件并导入。当我有两个以上的文件需要很长时间。

我想知道是否有更好的方法来导入多个文件,例如一个文件会导入其他文件或类似文件。

我正在使用WAMP我想在我的计算机上找到不需要安装其他程序的解决方案。

11 个答案:

答案 0 :(得分:87)

感谢BlackCharly,我发现如何在Windows中执行此操作,打开终端转到内容文件夹并写入:

copy /b *.sql all_files.sql

这样只会将所有文件合并为一个,这样可以使用PhpMyAdmin

快速导入

在Linux中,正如BlackCharly所说:

cat *.sql  > all_files.sql

最后但同样重要的是,请考虑@mosh评论:

  

如果all_files.sql已存在,则可能导致递归复制   文件本身没有尽头!将结果单独放入   目录是安全的。

答案 1 :(得分:42)

这是我找到的最简单方法。

在Windows(powershell)中:

cat *.sql | C:\wamp64\bin\mysql\mysql5.7.21\bin\mysql.exe -u user -p database

您需要在上面的WAMP - MySQL插入路径,我已经使用了系统路径。

在Linux(Bash)中:

cat *.sql | mysql -u user -p database

答案 2 :(得分:11)

  1. 转到cmd

  2. 输入命令提示符 C:\ users \ Usersname> cd [.sql tables folder path]
    按Enter键 例如: C:\ users \ Usersname> cd E:\ project \ database

  3. 输入命令提示符
    C:\ users \ Usersname> [.sql文件夹的驱动器(目录)名称]
    按Enter键 例如: C:\ users \ Usersname> E:

  4. 在单个文件中输入marge all .sql文件(表)的命令提示符 copy / b * .sql newdatabase.sql
    按Enter键 EX: E:\ project \ database> copy / b * .sql newdatabase.sql

  5. 您可以在目录文件夹中看到合并多个.sql(文件)表文件到单个文件中 例如: E:\ project \ database

答案 3 :(得分:5)

我知道这已经有两年多了......但我一直在寻找一种方法来做到这一点,并且对于发布的解决方案并不过分满意(它工作正常,但我想要更多信息,因为进口发生)。将所有SQL文件合并为一个时,您不会获得任何类型的进度更新。

所以我一直在寻找答案,并认为这可能是一个发布我未来寻找相同答案的人的好地方。这是Windows中的命令行,它将从文件夹中导入多个SQL文件。您可以在mysql.exe所在的目录中从命令行运行此命令。

for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f

使用一些假定值(作为示例):

for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f

如果文件夹中有两组SQL备份,则可以将* .sql更改为更具体的内容(例如mydb _ * .sql)。

答案 4 :(得分:4)

像这样输入mysql shell。

  

mysql --host = localhost --user = username --password --database = db

然后使用 source 命令和分号分隔命令。

  

source file1.sql;源文件2;源文件3;

答案 5 :(得分:3)

只需键入:

cat *.sql |mysql -uroot -p

并且mysql将按顺序导入所有sql文件

答案 6 :(得分:2)

将此文件另存为.bat并运行它,更改括号内的变量...

@echo off
title Mysql Import Script
cd (Folder Name)
 for %%a in (*) do (
     echo Importing File  : %%a 
     mysql -u(username) -p(password)  %%~na < %%a
)
pause

如果它只有一个数据库修改(%% ~na)和数据库名称。

答案 7 :(得分:2)

您也可以通过for循环来这样做:

#!/bin/bash
for i in *.sql
do
    echo "Importing: $i"
    mysql your_db_name < $i
    wait
done 

Source

答案 8 :(得分:0)

最简单的解决方案是将每个sql文件复制/粘贴到一个。

您无法为文件导入添加一些 sql标记(导入的文件将在您的计算机中,而不是在服务器中,我不认为MySQL管理一些导入标记用于外部sql文件)。

答案 9 :(得分:0)

只需在命令提示符下键入以下命令,它将所有sql文件绑定到单个sql文件中,

c:/xampp/mysql/bin/sql/ type *.sql > OneFile.sql;

答案 10 :(得分:0)

在Windows中打开Windows Powershell,然后转到运行该命令的sql文件所在的文件夹

cat *.sql |  C:\xampp\mysql\bin\mysql.exe -u username -p databasename