📜  如何在mysql中加载文件(1)

📅  最后修改于: 2023-12-03 15:38:34.930000             🧑  作者: Mango

如何在MySQL中加载文件

在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:要加载的文件名,需要提供文件的完整路径。
  • IGNOREREPLACE:用于控制行为,如果是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表中的idusernameemail三个字段中。由于我们使用了IGNORE,所以如果user表中已经存在同样的数据,这些数据将会被忽略,不会被重复导入。

总结

LOAD DATA INFILE语句可以方便地从文件中导入数据到MySQL数据库表中,通过合理地利用各种参数和选项,可以灵活地控制导入的行为和结果。需要注意的是,在加载文件之前需要确保文件内容的格式正确,文件所在的目录应该对MySQL有可读的权限。