1 LOAD DATA INFILE
使用LOAD DATA INFILE用于向mysql中导入表格数据,表格数据可以是任意格式,一般是CSV格式。
使用语法:
LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, 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
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT}
[, col_name={expr | DEFAULT}] ...]
参数解释如下
1.1 LOW_PRIORITY
只对那些只采用了表级别锁(如MYISAM)的引擎有影响,比如InnoDB使用的是行锁,不受这个影响,具体的来说,使用了LOW_PRIORITY,则本操作会在其它线程完成之后再操作。
1.2 CONCURRENT
和其它线程同时进行,这个对性能是有一些影响。
1.3 LOCAL
文件的位置,简单的说,如果指定了local,则表示文件位于客户端,如果没有,则表示文件在Server端。
1.4 REPLACE | IGNORE
数据库中的数据跟导入的数据有惟一性冲突的时候,采用什么样的方式,是替换已有还是忽略当前。特别需要说明的是,当这两种方式都未指定时,如果数据来自于客户端,则重复的数据会忽略,如果来源于服务端,则命令将终止执行。
1.5 CHARACTER SET
指定文件的编码集
1.6 [{FIELDS | COLUMNS} [TERMINATED BY 'string'][[OPTIONALLY] ENCLOSED BY 'char'][ESCAPED BY 'char']]
指定了对于字段的处理方式:
-
FIELDS
和COLUMNS
指定其中一个即可。 -
TERMINATED
表示字段间的分隔符, -
ENCLOSED BY
的意思是字段值由什么符号包围, -
ESCAPED
表示指定转义字符。
在不指定这个参数的情况下,默认的字段分隔符是\t
, 默认字段值无任何值包围,默认转义字符为\
。
1.7 [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
指定每一行的起始符与终止符,默认情况下,起始符为空,终止符为\n
,对于windows产生的文本文件来说,需要指定换行符为\r\n
。
1.8 IGNORE number LINES
忽略导入文件中的前 number
行,通常情况下,如果文件的第1行为列名,要忽略列名,这儿的值设置为1即可。
1.9 [(col_name_or_user_var,…)]
有的时候我们不需要给所有的字段都填充值,这个时候就可以指定列名,以()
将列名括起来。
网友评论