MySQL如何导入格式化数据-mysql教程-学派吧

在MySQL中如何导入格式化数据?本篇文章就来给大家介绍MySQL导入格式化数据的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在有些场景下,我们需要把一批特定格式的数据导入到mysql数据库中,做法有很多,使用shell脚本、python都可以,今天来介绍两个更便捷的命令,mysqlimportload data

mysqlimport

使用方法

mysqlimport [options] db_name textfile1 [textfile2 ...]
# db_name 对应数据库名称
# textfile 文件名,对应要插入的数据库表名
# 比如:mysqlimport a8 campaign.txt 会把campaign.txt中的数据插入到a8数据库中的campaign表

注意:campaign.txt文件必须在/usr/local/mysql/var/a8/目录下,即数据库所在目录

如果不在对应的目录下,会返回以下错误:

mysqlimport -uroot -p123456 -hlocalhost -P3306 a8 campaign.txt 
/usr/local/mysql/bin/mysqlimport: Error: File '/usr/local/mysql/var/a8/campaign.txt' not found (Errcode: 2), when using table: campaign

常用选项

--columns=id,name,creator...
# 对应的数据表列名,定义被导入文件中的每一列对应的数据库表列名

--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服务器地址和用于连接的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
# 显示版本信息并退出。

load data

使用方法

mysql> load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields]
[terminated by '\t']
[OPTIONALLY] enclosed by '']
[escaped by '\' ]]
[lines terminated by 'n']
[ignore number lines]
[(id,name,creator)]

说明:

load data infile语句是将文本数据导入到数据表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。使用前请确保有文件的读取权限

1、如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:

mysql> load data low_priority infile "/home/root/data.sql" into table campaign;

2、如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。

3、replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:

mysql> load data low_priority infile "/home/root/data.sql" replace into table campaign;

4、分隔符

1)fields关键字指定了文件字段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

terminated by:分隔符,字段是以什么字符作为分隔符
enclosed by:字段括起字符,例:` "周丽","10","学习很好" ` 这样的一行,就需要这么写 ` ENCLOSED BY '"' `
escaped by:转义字符
lines terminated by:描述字段的分隔符,默认情况下是tab字符(\t) 
ignore number lines:用来忽略导入文件的开始的行。例如:number=1,则忽略导入文件的第一行数据。

例如:

mysql> load data infile "/home/root/data.sql" replace into table campaign fields terminated by',' enclosed by '"';

2)lines 关键字指定了每条记录的分隔符默认为'n'即为换行符
如果两个字段都指定了那fields必须在lines之前。如果不指定fields关键字缺省值和这样写是相同的:fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'
如果你不指定一个lines子句,缺省值和这样写是相同的: lines terminated by'\n'
例如:

mysql> load data infile "/root/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';

5、load data infile 可以按指定的列把文件导入到数据库中。 当我们要把数据的一部分内容导入的时候,,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。比方说,我们要从Access数据库升级到MySQL数据库的时候
下面的例子显示了如何向指定的栏目(field)中导入数据:

mysql> load data infile "/home/root/campaign.txt" into table campaign(id, name, creator);

6、当在服务器主机上寻找文件时,服务器使用下列规则:

● 如果给出一个绝对路径名,服务器使用该路径名。

● 如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。

● 如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。

例如: /campaign.txt 是从服务器的数据目录读取,而作为 campaign.txt 是从当前数据库的数据库目录下读取。

相关视频教程推荐:《MySQL教程》

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上就是MySQL如何导入格式化数据的详细内容,更多请关注php中文网其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/data/3456.html

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年4月9日 下午8:57
下一篇 2019年4月9日 下午8:57

相关推荐

  • 数据库中的Schema是什么?-mysql教程-

    数据库中schema是数据库对象集合,它包含了表,视图等多种对象。schema就像是用户名,当访问数据表时未指明属于哪个schema,系统就会自动的加上缺省的schema 我们在学习数据库中会碰到一个模糊的概念,它就是Schema。很多人对他都不是很了解,今天将要在文章中为大家详细介绍这个概念,具有一定的参考作用,希望对大家有所帮助。 【推荐课程:数据库教程…

    数据库运维 2019年4月24日
    5.5K00
  • MySQL server PID file could not be found! 的解决办法

    linux服务器安装lnmp之后重启Mysql有可能会经常碰到这样的错误提示: ERROR! MySQL server PID file could not be found! 反正我是经常碰到这样的情况,有些reboot重启下服务器就恢复了,有些可能需要重装下php。 但是大部分情况可能是进程的问题。 首先输入查询命令:[root@server ~]# p…

    数据库运维 2018年7月9日
    8.9K00
  • MySQL数据库索引的内容介绍-mysql教程-学派吧

    本篇文章给大家带来的内容是关于MySQL数据库索引的内容介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 存储引擎是数据库的核心,常用的MySQL存储引擎有InnoDB,MyISAM,memory.索引是加速数据的查询的一种数据结构. 1. 索引简介 1.1 索引优点 查询数据块 数据唯一性 加速表之间的连接 1.2 索引缺点 索引会占用…

    数据库运维 2019年4月9日
    2.6K00
  • mysql禁止外部访问解决方案-mysql教程

    本文主要讲述了当mysql禁止外部访问的解决方案,具有一定的收藏价值,有需要的朋友了解一下吧。 1.在端口已经开放的情况下,ubuntu mysql 3306允许远程访问vim /etc/mysql/mysql.conf.d/mysqld.cnf注释#bind-address = 127.0.0.1 2.给用户授权允许远程访问:grant all privi…

    数据库运维 2019年4月24日
    3.1K00
  • 讲解mysql默认事务隔离级别是什么-

    mysql数据库事务的隔离级别有4个,而默认的事务处理级别就是’REPEATABLE-READ’,也就是可重复读。下面本篇文章就来带大家了解一下mysql的这4种事务的隔离级别,希望对大家有所帮助。 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处…

    数据库运维 2019年4月24日
    4.0K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部