📅  最后修改于: 2023-12-03 15:38:34.930000             🧑  作者: Mango
在MySQL中,我们可以使用LOAD DATA INFILE
语句来加载文件。这个语句可以方便地将文件中的数据导入到MySQL数据库表中,以实现数据的快速导入和处理。
LOAD DATA INFILE 'file_name'
[IGNORE | REPLACE] INTO TABLE table_name
[CHARACTER SET charset_name]
FIELDS
[TERMINATED BY 'field_terminated']
[ENCLOSED BY 'field_enclosed']
[ESCAPED BY 'escape_char']
LINES
[STARTING BY 'line_starting']
[TERMINATED BY 'line_terminated']
IGNORE number LINES
(col1, col2, col3, ...)
SET
column_name = expression,
...
file_name
:要加载的文件名,需要提供文件的完整路径。IGNORE
或REPLACE
:用于控制行为,如果是IGNORE
,则会忽略已经存在的数据,如果是REPLACE
,则会覆盖已经存在的数据。table_name
:目标表的名称。charset_name
:字符集名称。FIELDS
:用来描述每个字段的分隔符和包围符号等信息。TERMINATED BY
:字段之间的分隔符,默认是制表符\t
。ENCLOSED BY
:字段的包围符号,默认为空,表示没有包围符号。ESCAPED BY
:用于转义的字符,默认是反斜杠\\
。LINES
:用来描述每行数据的分隔符等信息。STARTING BY
:行开始的字符,默认为空,表示不指定。TERMINATED BY
:行结束的字符,默认是换行符\r\n
。IGNORE number LINES
:忽略掉文件的前几行。(col1, col2, col3, ...)
:需要导入数据的表的列名,必须和文件中的字段对应。SET
:用于设置一些默认值。假设我们有一个名为user
的数据表,包含以下字段:
id | int(11)
username | varchar(50)
email | varchar(100)
现在我们有一个名为users.csv
的文件,内容如下:
1,john,john@example.com
2,jane,jane@example.com
3,bob,bob@example.com
我们可以使用以下方式将这个文件的数据导入到user
表中:
LOAD DATA INFILE '/path/to/users.csv'
IGNORE INTO TABLE `user`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' -- 或'\r\n'
(id, username, email);
这个语句告诉MySQL从/path/to/users.csv
文件中加载数据,按照,
为分隔符,\n
为行分隔符,然后将数据导入到user
表中的id
、username
、email
三个字段中。由于我们使用了IGNORE
,所以如果user
表中已经存在同样的数据,这些数据将会被忽略,不会被重复导入。
LOAD DATA INFILE语句可以方便地从文件中导入数据到MySQL数据库表中,通过合理地利用各种参数和选项,可以灵活地控制导入的行为和结果。需要注意的是,在加载文件之前需要确保文件内容的格式正确,文件所在的目录应该对MySQL有可读的权限。