mysql导出导⼊⽂本⽂件的⼏种⽅式总结
⼀、使⽤mysql命令导出⽂本⽂件
mysql命令可以⽤来登录MySQL服务器,也可以⽤来还原备份⽂件,同时,mysql命令也可以导出⽂本⽂件。
基本的语法格式如下:
mysql -u root -pPassword -e "SELECT 语句" dbname>C:\
或者
mysql -u root -pPassword --execute="SELECT 语句" dbname>C:\
其中:
Password表⽰root⽤户的密码。
使⽤-e或者--execute选项就可以执⾏SQL语句。
"SELECT 语句"⽤来查询记录。
C:\表⽰导出⽂件的路径和⽂件名。
在导出的⽂件中,不同列之间使⽤制表符分隔,第1⾏包含了各个字段的名称。
另外使⽤mysql命令还可以指定查询结果的显⽰格式,如果某⾏记录字段很多,可能⼀⾏不能完全显⽰,此时可以使⽤--vartical参数,将每条记录分为多⾏显⽰。
例如使⽤mysql命令导出example数据库下employee表中的记录到⽂本⽂件,使⽤--vertical参数显⽰结果。SQL代码如下:
1mysql -u root -p --vertical -e "SELECT * FROM employee;"example>F:\
SELECT的查询结果导出到⽂本⽂件之后,显⽰格式发⽣了变化,内容变成了垂直显⽰格式。如果employee表中记录内容很长,这样显⽰将会更加容易阅读。
⼆、使⽤mysql命令导出xml⽂件
使⽤mysql命令可以导出XML⽂件。基本的语法格式如下:
mysql -u root -pPassword --xml|-X -e "SELECT 语句" dbname>C:\l
或者
mysql -u root -pPassword --xml|-X --execute="SELECT 语句" dbname>C:\l
其中:
Password表⽰root⽤户的密码。
使⽤-xml或者-X选项就可以导出xml格式的⽂件。
使⽤-e或者--execute选项就可以执⾏SQL语句。
"SELECT 语句"⽤来查询记录。
C:\表⽰导出⽂件的路径和⽂件名。
使⽤mysql命令导出example数据库中employee表中的记录到xml⽂件。SQL代码如下:
mysql -u root -p -X --execute="SELECT * FROM employee;" example>F:\l
如果在employee表存在中⽂内容,为了避免乱码。可以使⽤下⾯的语句代码:
mysql -u root -p -X --default-character-set=utf8 --execute="SELECT * FROM employee;" example>F:\l
三、使⽤mysql命令导出html⽂件
使⽤mysql命令可以导出HTML⽹页⽂件。基本的语法格式如下:
mysql -u root -pPassword --html|-H -e "SELECT 语句" dbname>C:\name.html
或者
mysql -u root -pPassword --html|-H --execute="SELECT 语句" dbname>C:\name.html
其中:
Password表⽰root⽤户的密码。
使⽤--html或者-H选项就可以导出HTML格式的⽂件。
使⽤-e或者--execute选项就可以执⾏SQL语句。
"SELECT 语句"⽤来查询记录。
C:\表⽰导出⽂件的路径和⽂件名。
使⽤mysql命令导出example数据库中employee表中的记录到html⽂件。SQL代码如下:
mysql -u root -p --html --execute="SELECT * FROM employee;" example> F:\backup\employee.html
四、使⽤INTO OUTFILE导出⽂本⽂件
MySQL中,可以使⽤INTO OUTFILE语句将表的内容导出为⼀个⽂本⽂件。其基本的语法格式如下:
1SELECT[列名] FROM table[WHERE 语句] INTO OUTFILE '⽬标⽂件'[OPTION];
该语句分为两个部分。前半部分是⼀个普通的SELECT语句,通过这个SELECT语句来查询所需要的数据;后半部分是导出数据的。其中,“⽬标⽂件”参数指出将查询的记录导出到哪个⽂件中;
“OPTION”参数为可选参数选项,其可能的取值有:
FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。
FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认情况下不使⽤任何符号。
FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使⽤任何符号。
FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“\”。
LINES STARTING BY '字符串':设置每⾏数据开头的字符,可以为单个或多个字符。默认情况下不使⽤任何字符。
LINES TERMINATED BY '字符串':设置每⾏数据结尾的字符,可以为单个或多个字符。默认值是“\n”。
FIELDS和LINES两个⼦句都是⾃选的,但是如果两个⼦句都被指定了,FIELDS必须位于LINES的前⾯。
例如使⽤INTO OUTFILE语句来导出example数据库下employee表的记录。其中,字段之间⽤“、”隔开,字符型数据⽤双引号括起来。每条记录以“>”开头。SQL代码如下:
SELECT * ployee INTO OUTFILE 'F:/backup/'
FIELDS
TERMINATED BY '\、'
OPTIONALLY ENCLOSED BY '\"'
LINES
STARTING BY '\>'
TERMINATED BY '\r\n';
FIELDS必须位于LINES的前⾯,多个FIELDS⼦句排列在⼀起时,后⾯的FIELDS必须省略;同样,多个LINES⼦句排列在⼀起时,后⾯的LINES也必须省略。
如果在employee表中包含了中⽂字符,使⽤上⾯的语句则会输出乱码。此时,加⼊CHARACTER SET gbk语句即可解决这⼀个问题。修改SQL代码如下:
SELECT * ployee INTO OUTFILE 'F:/backup/'
CHARACTER SET gbk
FIELDS
TERMINATED BY '\、'
OPTIONALLY ENCLOSED BY '\"'
LINES
STARTING BY '\>'
TERMINATED BY '\r\n';
“TERMINATED BY '\r\n'”可以保证每条记录占⼀⾏。因为Windows操作系统下“\r\n”才是回车换⾏。如果不加这个选项,默认情况只是“\n”。
⽤root⽤户登录到MySQL服务器中,然后执⾏上述命令。
提⽰:
该语法中的“⽬标⽂件”被创建到服务器主机上,因此必须拥有⽂件写⼊权限(FILE权限)后,才能使⽤此语法。同时,“⽬标⽂
件”不能是⼀个已经存在的⽂件。
五、使⽤mysqldump命令导出xml⽂件
mysqldump命令还可以导出xml格式的⽂件。其基本的语法格式如下:
1mysqldump -u root -p --xml|-X dbname table>C:\l
其中:
使⽤--xml或者-X选项就可以导出xml格式的⽂件。
dbname表⽰数据库的名称。
table表⽰表的名称。
C:\l表⽰导出的xml⽂件的路径和⽂件名。
例如使⽤mysqldump命令将example数据库下的employee表可以导出为xml格式的⽂件。SQL代码如下:
1mysqldump -u root -p -X example employee>F:\l
六、使⽤mysqldump命令导出⽂本⽂件
mysqldump命令还可以导出纯⽂本⽂件。其基本的语法格式如下:
mysqldump -u root -pPassword -T ⽬标⽬录 dbname [tables] [option];
其中:
Password参数表⽰root⽤户的密码,密码紧挨着-p选项。
-T:只有指定了-T参数,才可以导出纯⽂本⽂件。
⽬标⽬录:是指导出的⽂本⽂件的路径。
dbname参数表⽰数据库的名称。
tables参数表⽰要导出的表的名称。如果不指定,则导出数据库dbname中所有的表。
option为可选参数选项,这些选项需要结合-T选项使⽤。
option常见的取值如下:
--fields-terminated-by=字符串:设置字符串为各个字段之间的分隔符,可以为单个或多个字符。默认值为制表符“\t”。
--fields-enclosed-by=字符:设置字符来括住字段的值。
--fields-optionally-enclosed-by=字符:设置字符括住CHAR、VARCHAR和TEXT等字符型字段,只能为单个字符。
--fields-escaped-by=字符:设置转义字符,只能为单个字符。默认值为“\”。
--lines-terminated-by=字符串:设置每⾏数据结尾的字符,可以为单个或多个字符。默认值为“\n”。
使⽤mysqldump语句导出example数据库下的employee表的记录。其中,字段之间⽤“,”隔开,字符型数据⽤双引号括起来。SQL命令代码如下:
mysqldump -u root -p -T F:\backup\ example employee --fields-terminated-by=\, --fields-optionally-enclosed-by=\"--lines-terminated-by=\r\n
其实,mysqldump命令也是调⽤INTO OUTFILE语句来导出⽂本⽂件的。除此之外,mysqldump命令同时还⽣成了employee.sql⽂件,该⽂件中有表的结构和表中的记录。
提⽰:
与INTO OUTFILE语句中的OPTIONS各个参数的设置不同,这⾥option各个选项等号后⾯的值不要⽤引号括起来。
七、MySQL使⽤mysqlimport命令导⼊⽂本⽂件
MySQL中,可以使⽤mysqlimport命令将⽂本⽂件导⼊到MySQL数据库中。基本的语法格式如下:
mysqlimport -u root -pPassword [--local] [OPTION]
其中,“Password”参数是root⽤户的密码,必须与-p选项紧挨着;“--local”是在本地计算机中查⽂本⽂件时使⽤
的;“dbname”参数表⽰数据库的名称;“”参数指定了⽂本⽂件的路径和名称;“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表中。操作步骤如下:
1. 查看F:/⽂件中的内容。
注意:
如果⽂件中包含了中⽂字符,则需要将employee表的字符集修改为gb2312,使employe
<⽂件和employee表的字符集保持⼀致。否则,将记录导⼊到employee表中以后,会出现乱码的现象。当然,如果⽂本⽂件使⽤的是utf8字符集,那么,则需要将employee表的字符集修改为utf8。
2. 如果没有employee表,则需要创建⼀个空employee表;如果该表已经存在,则将employee表中的数据全部删除。
3. 本实例中,⽂件使⽤的是中⽂gb2312字符集,现在将employee表同样设置为gb2312字符集。SQL代码如下:
mysql>ALTER TABLE employee DEFAULT character set gb2312;
mysql>ALTER TABLE employee CONVERT TO character set gb2312;
4. 使⽤mysqlimport命令,将⽂件中的记录导⼊到employee表中。SQL代码如下:
mysqlimport -u root -p example F:/ --fields-terminated-by=\、 --fields-optionally-enclosed-by=\" --lines-terminated-by=\r\nmysql存储文档
上⾯的语句要在⼀⾏中输⼊,要注意空格的使⽤。
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:显⽰版本信息并退出。
以下内容必须注意
1)secure_file_priv参数说明
MYSQL新特性secure_file_priv对读写⽂件的影响

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。