使用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 导入dat 向mysql导入数据_warnings


mysql 导入dat 向mysql导入数据_mysql 导入dat_02

数据:

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)