INSERT INTO `some_table` (column1,column2,...) values(data1,data2,...),(data3,data4)...;
(1)mysqlimport的用法如下:
mysqlimport [options] db_name textfile1 [textfile2 ...]
其中db_name为要插入的数据库名字,textfile为要插入的格式化数据所在的文件,文件里的数据插入到文件名去掉后缀后剩余名字对应的表中
比如:mysqlimport [省略选项] database_name some_table.txt
会把some_table.txt中的数据插入到数据库名为database_name,表名为some_table的数据表中
mysqlimport还有很多选项,下面按照使用的频率列出如下:
--columns=第一列对应的数据表列名,第二列对应的数据表列名,…
定义被导入文件中的每一列对应的数据库表列名
--fields-terminated-by=
数据域以什么结束,参数为字符串,默认为\t
--fields-enclosed-by=
数据域用什么符号扩起来,默认为空,一般可以是双引号、括号等
--fields-optionally-enclosed-by=
数据域可以用什么符号括起来,因为为只有部分数据用这些符号括起来
--fields-escaped-by=
转义字符,参数为字符,默认为\
--lines-terminated-by=
数据行以什么结束,参数为字符串,windows默认为\r\n
--user=user_name -u user_name
--password[=password] -p[password]
--host=host_name -h hostname
--port=port_num,-P port_num
定义用户名、密码、mysql服务器ip和用于连接的TCP/IP端口号,默认为mysql默认端口3306
--ignore-lines=n
忽视数据文件的前n行,因为很多数据文件前面有表头
--delete -D
在把文件中的数据插入前删除表中原先的数据
--local -L
指定从客户端电脑读入数据文件,否则从服务器电脑读取
--lock-tables -l
处理文本文件前锁定所有表以便写入,确保所有表在服务器上保持同步
--protocol={TCP | SOCKET | PIPE | MEMORY}
使用的连接协议
--force -f
忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件
不使用--force,如果表不存在则mysqlimport退出
--compress -C
压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)
--silent,-s
沉默模式,只有出现错误时才输出
--socket=path,-S path
当连接localhost时使用的套接字文件(为默认主机)
--verbose,-v
冗长模式。打印出程序操作的详细信息。
--version,-V
显示版本信息并退出。
(2)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'] //括起字段的符号
[ESCAPED BY 'char' ] //字段中的转义符
]
[LINES
[STARTING BY 'string'] //行的开始字符串
[TERMINATED BY 'string'] //行末尾分割符号
]
[IGNORE number LINES] //跳过前面number行
[(col_name_or_user_var,...)] //字段名称
[SET col_name = expr,...)]
比如一个数据文本如下:
股票代码 股票名称 开盘价 收盘价
Def:"000001","深发展A","13.24","13.56"
Def:"000002","万科A","24.43","24.77"
用两种方法导入mysql分别为:
mysqlimport --columns=stock_code,stock_name,opening,settlement --fields-terminated-by=, --fields-enclosed-by=" --fields-escaped-by=\ --lines-terminated-by=\r\n -uroot -ppasswd -hlocalhost -P3306 --ignore-lines=1 -L database_name table_name.txt
LOAD DATA LOCAL INFILE 'table_name.txt'
INTO TABLE database_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\'
LINES STARTING BY 'Def'
IGNORE 1 LINES
(stock_code,stock_name,opening,settlement);