使用mysql的load data导入数据
格式如下:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name [FIELDS //字段
[TERMINATED BY 'string'] //字段分割符
[[OPTIONALLY] ENCLOSED BY 'char']//字段的包含符,”test”,char代表引号
[ESCAPED BY 'char' ] //转义符,如“//”,没有就给“”
]
[LINES
[STARTING BY 'string'] //行的开始字符串,从string后面开始
[TERMINATED BY 'string'] //行分隔符 windows一定要用‘/r/n’
]
[IGNORE number LINES] //跳过前面number行
[(col_name_or_user_var,...)] //字段名称
[SET col_name = expr,...)]
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。
LOW_PRIORITY:如果您使用LOW_PRIORITY,则LOAD DATA语句的执行被延迟,直到没有其它的客户端从表中读取为止。
LOCAL:说明文件位于本机,没有local说明文件位于服务器上。需要服务器端开启
FIELDS必须位于LINES的前面。
例子:
,
数据:
mysql> load data local infile 'c:/downloads/exp.csv' into table a1
-> fields terminated by ',' enclosed by '"' escaped by ''
-> lines starting by 'def:' terminated by '/r/n'
-> (id,name,@dat)
-> set @dat=current_date();
Query OK, 8 rows affected (0.00 sec)
有一个bug,不能有两行””asd””,导入的数据有问题
将数据导出为文件
SELECT column1,colum2 INTO OUTFILE ‘fiel_path’[FIELDS //字段 [TERMINATED BY 'string'] //字段分割符 [[OPTIONALLY] ENCLOSED BY 'char']//字段的包含符,”test”,char代表引号 [ESCAPED BY 'char' ] //转义符,如“//”,没有就给“”][LINES [STARTING BY 'string'] //行的开始字符串,从string后面开始 [TERMINATED BY 'string'] //行分隔符 windows一定要用‘/r/n’]
FROM table_name ORDER BY
例子
mysql> select id,name into outfile 'c:/testaa.csv'
-> fields terminated by ',' enclosed by '"' escaped by ''
-> lines starting by 'def:' terminated by '/r/n'
-> from a1 order by id desc;
Query OK, 8 rows affected (0.00 sec)
mysqlimport:数据导入程序
mysqlimport客户端提供了LOAD DATA INFILEQL语句的一个命令行接口。mysqlimport的大多数选项直接对应LOAD DATA INFILE子句。
这样调用mysqlimport:
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
对于在命令行中命名的每个文本文件,mysqlimport去掉文件名的扩展名并使用结果来确定将导入文件内容的表名。例如,文件 patient.txt、patient.text和patient均将导入表patient。
mysqlimport支持下面的选项:
---help,-?:显示帮助消息并退出。
--columns=column_list, -c column_list :该选项采用用逗号分隔的列名作为其值。列名的顺序指示如何匹配数据文件列和表列。-cid,name
--compress,-C
压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。
---debug[=debug_options],-# [debug_options]
写调试日志。debug_options字符串通常是'd:t:o,file_name'。
--delete,-D
导入文本文件前清空表。
--fields-terminated-by=...,--fields-terminated-by=,
--fields-enclosed-by=..., --fields-terminated-by=/”
--fields-optionally-enclosed-by=...,--fields-optionally-terminated-by=/”
--fields-escaped-by=..., --fields-escaped-by=//
--lines-terminated-by=... --lines-terminated-by=/n
这些选项与LOAD DATA INFILE相应子句的含义相同。
--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 : 沉默模式。只有出现错误时才输出。
--socket=path,-S path : 当连接localhost时使用的套接字文件(为默认主机)。
--user=user_name,-u user_name : 当连接服务器时MySQL使用的用户名。
--verbose,-v : 冗长模式。打印出程序操作的详细信息。
--version,-V : 显示版本信息并退出。
例子:
mysql> use test
Database changed
mysql> select * from temp2;
+--------+--------+--------+--------+--------+--------+--------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+--------+--------+--------+--------+--------+--------+--------+
| "1" | "1" | "1" | "2" | "2" | "2" | "3" |
| "10" | "15" | "20" | "80" | "100" | "60" | "500" |
| "aaaa" | "bbbb" | "cccc" | "aaaa" | "bbbb" | "dddd" | "dddd" |
| "1" | "2" | "3" | "4" | "5" | "6" | "7" |
+--------+--------+--------+--------+--------+--------+--------+
4 rows in set (0.00 sec)
mysql> select * from temp2 into outfile 'c://temp2.sql'
> fields terminated by ',' enclosed by ‘”’
> lines terminated by '/n';
Query OK, 4 rows affected (0.00 sec)
mysql> exit
Bye
C:/>mysqlimport -uroot -p******** --fields-terminated-by=, -Ld --fields-enclosed-by=/” --lines-terminated-by=/n test c://temp2.sql
test.temp2;
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
//L:本地客户端文件,d:锁住表 文件名就是表的名称
mysql> use test
Database changed
mysql> select * from temp2;
+--------+--------+--------+--------+--------+--------+--------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+--------+--------+--------+--------+--------+--------+--------+
| "1" | "1" | "1" | "2" | "2" | "2" | "3" |
| "10" | "15" | "20" | "80" | "100" | "60" | "500" |
| "aaaa" | "bbbb" | "cccc" | "aaaa" | "bbbb" | "dddd" | "dddd" |
| "1" | "2" | "3" | "4" | "5" | "6" | "7" |
| "1" | "1" | "1" | "2" | "2" | "2" | "3" |
| "10" | "15" | "20" | "80" | "100" | "60" | "500" |
| "aaaa" | "bbbb" | "cccc" | "aaaa" | "bbbb" | "dddd" | "dddd" |
| "1" | "2" | "3" | "4" | "5" | "6" | "7" |
+--------+--------+--------+--------+--------+--------+--------+
8 rows in set (0.00 sec)