版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/83146444
查询结果导入文件或excel
方法1
进入mysql服务器中
select * from www limit 1000 into outfile '/xusy/www.xls';
注意文件名外有单引号
如果方法1不行,当连接外部服务器
方法2
直接进行操作
mysql -utest -p123456 -h10.1.5.8 -P3306 -e"select * from his limit 1000 " pop> /xusy/1000line.xls;
注意连接参数4个要全,还有加-e
如果是文件,则为.txt,如果为excel,则为.xls
文件导入数据库
LOAD DATA INFILE 语句以非常高的速度从文本文件中读取行到表中。
当从一个文本文件装载一个表时,使用LOAD DATA INFILE。这通常比使用很多INSERT语句快20倍。
详情可见
http://blog.itpub.net/28218939/viewspace-2139664/
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
复制代码
举例:
复制代码
> delete from e;
> load data infile "/data/mysql/e.sql" into table e fields terminated by ',';
Query OK, 3 rows affected (0.01 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
> select * from e;
+------+-------+-------+
| id | fname | lname |
+------+-------+-------+
| 1669 | Jim | Smith |
| 337 | Mary | Jones |
| 2005 | Linda | Black |
+------+-------+-------+
复制代码
因为我们前面指定的分隔符是 ‘,’,load data 时也要指定分隔符,否则也会报错:
> load data infile "/data/mysql/e.sql" into table e;
ERROR 1265 (01000): Data truncated for column 'id' at row 1
如果数据被某种符号封闭着,需要指定 ‘ fields enclosed by ’ :
复制代码
cat e.sql
"1669" "Jim" "Smith"
> load data infile "/data/mysql/e.sql" into table e;
ERROR 1366 (HY000): Incorrect integer value: '"1669"' for column 'id' at row 1
> load data infile "/data/mysql/e.sql" into table e fields enclosed by '"';
Query OK, 1 row affected (0.01 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
复制代码
如上所示,数据被双引号封闭着,如果直接执行,会报错。
另外还有一些格式上的限制,如 LINES TERMINATED BY ‘string’ ,指定 file 的换行符,如 ‘\n’ 。