MySQL怎样导入格式化数据【MySQL教程】,mysql,导入数据
在有些场景下,我们须要把一批特定花样的数据导入到mysql数据库中,做法有许多,运用shell剧本、python都能够,本日来引见两个更便利的敕令,mysqlimport
和 load 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教程》
以上就是本篇文章的全部内容,愿望能对人人的进修有所协助。更多精彩内容人人能够关注ki4网相干教程栏目!!!
以上就是MySQL怎样导入花样化数据的细致内容,更多请关注ki4网别的相干文章!