现在的位置: 首页 > 综合 > 正文

Linux下的Mysql,导入执行sql文件命令

2017年03月17日 ⁄ 综合 ⁄ 共 3422字 ⁄ 字号 评论关闭
mysql -u root -p dbname < filename sql执行上述命令,会提示你输入root账户的密码,密码验证成功后会在dbname这个数据库中执行filena

mysql -u root -p dbname < filename.sql执行上述命令,会提示你输入root账户的密码,密码验证成功后会在dbname这个数据库中执行filename.sql这个脚本。filename.sql处填写你的sql文件所在的路径。例如:mysql -u root -p dbname < /home/root/news.sql

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是在命令行下导入sql数据的方法,需要的朋友可以参考下。
我的个人实践是:phpmyadmin 导出 utf-8 的 insert 模式的 abc.sql
ftp abc.sql 到服务器
ssh 到服务器
mysql -u abc -p use KKK(数据库名,如果没有就 create database KKK) set names 'utf8' source abc.sql

注意:我看到 set character set utf8; 的说法,那样不行,中文乱码。
1.首先在命令行控制台中打开mysql
或许命令的如下:
mysql -u root -p database_name
然后或许会提示输入对应的密码
2.下面这条命令或许对你有用,当你想更换一个数据库的时候
mysql>use database_name
然后使用下面这个命令
mysql>source d:\datafilename.sql
当然你需要将文件所在的路径搞清楚,并且正确地使用了他
进入mysql 安装所在的目录的子目录bin. 输入执行导入sql的命令.
例如: 你的mysql 安装在 d:\mysql
步骤如下:
开始 -> 运行 -> 输入CMD
D:
cd mysql\bin
mysql -u root -p123456 test <d:\a.sql
其中 root 为你的mysql管理员用户名, 123456 为密码 test为数据库名称 d:\a.sql 为备份下来的数据文件所在位置.
如果是Windows的话,从命令提示符下到MYSQL文件目录中的Bin文件夹下,执行命令
mysql -u root -p databasename < db.sql
其中root是你MYSQL的用户名,databasename是你数据库的名称,而db.sql你是的文件.注意你必须把db.sql放到bin文件夹下才可以.当然文件的位置可以换.

如果是LINUX的话,直接输入

mysql databasename < db.sql
详细出处参考:http://www.jb51.net/article/22734.htm

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

使用mysqlimport 将格式化文件导入mysql表

创建表Spam



看一下要插入的数据文件



mysql可执行文件mysqlimport还有一个mysql命令中的load
data
两个命令可以从文件中把格式化的数据导入数据库,如果有一个包含大数据量的文件,可以实现快速的数据导入

mysqlimport的用法如下:

/usr/local/mysql/bin/mysqlimport [options]
db_name
textfile1 [textfile2 ...]

其中db_name为要插入的数据库名字,textfile为要插入的格式化数据所在的文件,文件里的数据插入到文件名去掉后缀后剩余名字对应的表中

比如:mysqlimport [省略选项] Statistic Spam.txt

会把Spam.txt中的数据插入到数据库名为Statistic,表名为Spam的数据表中

而且Spam.txt文件必须在 /usr/local/mysql/var/Statistic/ 目录下【即/usr/local/mysql/var/库/】

刚开始的时候没注意文件的路径,返回以下错误:

[root@mx1 /tmp/KevinShell/statistic]# /usr/local/mysql/bin/mysqlimport
-uUSER -pPASSWD -hlocalhost -P3306 Statistic Spam.txt

/usr/local/mysql/bin/mysqlimport: Error: File '/usr/local/mysql/var/Statistic/Spam.txt' not found (Errcode: 2), when using table: Spam

之后又做了纠正,成功插入数据

[root@mx1 /tmp/KevinShell/statistic]# cp Spam.txt /usr/local/mysql/var/Statistic/
[root@mx1 /tmp/KevinShell/statistic]# /usr/local/mysql/bin/mysqlimport
-uUSER -pPASSWD
-hlocalhost -P3306 Statistic Spam.txt

再次查看一下表Spam,已经将数据成功插入,而且与Spam.txt文件中的数据是一样的

   下面介绍一些mysqlimport常用到的选项

--columns=第一列对应的数据表列名,第二列对应的数据表列名,…

定义被导入文件中的每一列对应的数据库表列名

--fields-terminated-by=

数据域以什么结束,参数为字符串,默认为\t

--fields-enclosed-by=

数据域用什么符号扩起来,默认为空,一般可以是双引号、括号等

--fields-optionally-enclosed-by=

数据域可以用什么符号括起来,因为为只有部分数据用这些符号括起来

--fields-escaped-by=

转义字符,参数为字符,默认为\

--lines-terminated-by=

数据行以什么结束,参数为字符串,windows默认为\r\n

--user=user_name -u user_name

--password[=password] -p[password]

--host=host_name -h hostname

--port=port_num-P port_num

定义用户名、密码、mysql服务器ip用于连接的TCP/IP端口号,默认为mysql默认端口3306

--ignore-lines=n

忽视数据文件的前n行,因为很多数据文件前面有表头

--delete -D

在把文件中的数据插入前删除表中原先的数据

--local -L

指定从客户端电脑读入数据文件,否则从服务器电脑读取

--lock-tables
-l

处理文本文件前锁定所有表以便写入确保所有表在服务器上保持同步

--protocol={TCP | SOCKET | PIPE | MEMORY}

使用的连接协议

--force
-f

忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件

不使用--force,如果表不存在则mysqlimport退出

--compress -C

压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)

--silent-s

沉默模式只有出现错误时才输出

--socket=path-S path

当连接localhost时使用的套接字文件(为默认主机)

--verbose-v

冗长模式。打印出程序操作的详细信息。

--version-V

显示版本信息并退出。

 

 

 

 

 

抱歉!评论已关闭.