Home >Database >Mysql Tutorial >How to import formatted data into MySQL

How to import formatted data into MySQL

青灯夜游
青灯夜游forward
2019-03-28 11:49:482370browse

How to import formatted data in MySQL? This article will introduce to you the method of importing formatted data into MySQL. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

In some scenarios, we need to import a batch of data in a specific format into the mysql database. There are many ways to do it. You can use shell scripts or python. Today we will introduce two more convenient commands, mysqlimport and load data

mysqlimport

Usage method

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

Note: The campaign.txt file must be in the /usr/local/mysql/var/a8/ directory, which is the directory where the database is located.

If it is not in the corresponding directory, the following error will be returned:

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

Common options

--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

Usage method

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)]

Instructions:

## The #load data infile statement imports text data into the data table. Before using this command, the mysqld process (service) must be running. Please make sure you have read permission on the file before using it

1. If you specify the keyword low_priority, MySQL will wait until no one else reads the table before inserting data. You can use the following command:

mysql> load data low_priority infile "/home/root/data.sql" into table campaign;
2. If you specify the local keyword, it means reading the file from the client host. If local is not specified, the file must be located on the server.

3. The replace and ignore keywords control the duplicate processing of existing unique key records. If you specify replace, the new row will replace the existing row with the same unique key value. If you specify ignore, the input of duplicate rows for existing rows with unique keys is skipped. If you do not specify either option, an error occurs when a duplicate key is found, and the remainder of the text file is ignored. For example:

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

1) The fields keyword specifies the splitting format of file fields. If this keyword is used, the MySQL parser hopes to see at least one of the following Options:

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

mysql> load data infile "/home/root/data.sql" replace into table campaign fields terminated by',' enclosed by '"';
2) The lines keyword specifies the delimiter for each record. The default is 'n', which is the newline character

If both fields are specified The fields must come before lines. If you do not specify the fields keyword, the default value is the same as writing:
fields terminated by'\t' enclosed by ' '' ' escaped by'\\'If you do not specify a lines Clause, the default value is the same as this:
lines terminated by'\n' For example:

mysql> load data infile "/root/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
5, load data infile can load the file according to the specified column Import into database. When we want to import part of the data, we need to add some columns (columns/fields/fields) to the MySQL database to meet some additional needs. For example, when we want to upgrade from an Access database to a MySQL database

The following example shows how to import data into a specified column (field):

mysql> load data infile "/home/root/campaign.txt" into table campaign(id, name, creator);
6. When looking for files on the server host , the server uses the following rules:

● If an absolute path name is given, the server uses that path name.

● If a relative pathname with one or more preceding components is given, the server searches for the file relative to the server's data directory.

● If a file name without a prefix is ​​given, the server looks for the file in the database directory of the current database.

For example: /campaign.txt is read from the server's data directory, while campaign.txt is read from the database directory of the current database.

Recommended video tutorials: "

MySQL Tutorial"

The above is the entire content of this article, I hope it will be helpful to everyone's learning. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

The above is the detailed content of How to import formatted data into MySQL. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete