www.baike369.com
百科369 > MySQL教程 > MySQL使用mysqlimport命令导入文本文件

MySQL使用mysqlimport命令导入文本文件


MySQL使用mysqlimport命令导入文本文件

MySQL中,可以使用mysqlimport命令将文本文件导入到MySQL数据库中。基本的语法格式如下:

mysqlimport -u root -pPassword [--local] dbname filename.txt [OPTION]

其中,“Password”参数是root用户的密码,必须与-p选项紧挨着;“--local”是在本地计算机中查找文本文件时使用的;“dbname”参数表示数据库的名称;“filename.txt”参数指定了文本文件的路径和名称;“OPTION”为可选参数选项,其常见的取值有:

  • --fields-terminated-by=字符串:设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值为制表符“\t”。
  • --fields-enclosed-by=字符:设置字符来括住字段的值,只能为单个字符。
  • --fields-optionally-enclosed-by=字符:设置字符括住CHAR、VARCHAR和TEXT等字符型字段,只能为单个字符。
  • --fields-escaped-by=字符:设置转义字符,默认值为反斜线“\”。
  • --lines-terminated-by=字符串:设置每行数据结尾的字符,可以为单个或多个字符,默认值为“\n”。
  • --ignore-lines=n:表示可以忽略前n行。

实例

使用mysqlimport命令,将employee.txt文件中的记录导入到employee表中。操作步骤如下:

1. 查看F:/backup/employee.txt文件中的内容。如下图所示:

employee.txt文件中的内容

注意:

如果employee.txt文件中包含了中文字符,则需要将employee表的字符集修改为gb2312,使employee.txt文件和employee表的字符集保持一致。否则,将记录导入到employee表中以后,会出现乱码的现象。

当然,如果文本文件使用的是utf8字符集,那么,则需要将employee表的字符集修改为utf8。

2. 如果没有employee表,则需要创建一个空employee表;如果该表已经存在,则将employee表中的数据全部删除。执行结果如下:

将employee表中的数据全部删除的操作效果

上图中,通过对表的查询可以看出,employee表已经没有了数据记录。就是数据表employee存在,但是表中没有任何记录。

3. 本实例中,employee.txt文件使用的是中文gb2312字符集,现在将employee表同样设置为gb2312字符集。SQL代码如下:

mysql>ALTER TABLE employee DEFAULT character set gb2312;
mysql>ALTER TABLE employee CONVERT TO character set gb2312;

执行结果如下:

将employee表的utf8字符集修改为gb2312字符集的操作效果

如果在phpMyAdmin中,则可以按照下面的步骤进行修改:

phpMyAdmin主界面->在左侧选择employee表->在右侧顶端点击“操作”链接->在“表选项”的“排序规则”中选择“gb2312_chinese_ci”->点击“执行”按钮,即可将employee表的字符集设置为gb2312。

3. 使用mysqlimport命令,将employee.txt文件中的记录导入到employee表中。SQL代码如下:

mysqlimport -u root -p example F:/backup/employee.txt --fields-terminated-by=\、 --fields-optionally-enclosed-by=\" --lines-terminated-by=\r\n

上面的语句要在一行中输入,要注意空格的使用。执行结果如下:

使用mysqlimport命令将employee.txt文件中的记录导入到employee表中的操作效果

语句执行成功,将employee.txt中的数据导入到了数据库中。

4. 查询employee表中的数据记录。如下图所示:

查询employee表中的数据记录的操作效果

通过对表的查询可以看出,已经成功将employee.txt中的数据导入到了employee表中。


mysqlimport选项

除了前面介绍的几个选项之外,mysqlimport命令还支持许多选项。常见的选项如下:

  • --columns=column_list,-c column_list:该选项使用逗号分隔的列名作为其值。列名的顺序指示如何匹配数据文件列和表列。
  • --compress,-C:压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。
  • -d,--delete:导入文本文件之前清空表。
  • --force,-f:忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件。不使用--force,如果表不存在,则mysqlimport退出。
  • --host=host_name,-h host_name:将数据导入给定主机上的MySQL服务器。默认主机是localhost。
  • --ignore,-i:参考--replace选项的描述。
  • --ignore-lines=n:忽视数据文件的前n行。
  • --local,-L:从本地客户端读入输入文件。
  • --lock-tables,-l:处理文本文件前锁定所有表以便写入。这样可以确保所有表在服务器上保持同步。
  • --password[=password],-p[password]:当连接服务器时使用的密码。如果使用短选项形式(-p),选项和密码之间不能有空格。在命令行中,如果--password或-p选项后面没有密码值,则提示输入一个密码。
  • --port=port_num,-P port_num:用于连接的TCP/IP端口号。
  • --protocol={TCP|SOCKET|PIPE|MEMORY}:使用的连接协议。
  • --replace,-r --replace和--ignore选项控制复制唯一键值已有记录的输入记录的处理。如果指定--replace,新行将替换有相同的唯一键值的已有行;如果指定--ignore,复制已有的唯一键值的输入行将被跳过;如果不指定这两个选项,当发现一个复制键值时会出现一个错误,并且忽视文本文件的剩余部分。
  • --silent,-s:沉默模式。只有出现错误时才输出信息。
  • --user=user_name,-u user_name:当连接服务器时MySQL使用的用户名。
  • --verbose,-v:冗长模式。打印出程序操作的详细信息。
  • --version,-V:显示版本信息并退出。
Copyright© 2011-2016 www.baike369.com All Rights Reserved