Post Jobs

澳门新葡亰平台游戏load data(sql),loaddatasql

澳门新葡亰平台游戏 8

load data(sql),loaddatasql

一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了。执行效率上可能就不太理想了。load
data语句用于高速地从一个文本文件中读取数据,装载到一个表中,相比于前者效率会高很多。
 
参考   以及mysql中文文档5.1整理如下,
  语法 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
澳门新葡亰平台游戏 2

 

解析 [LOW_PRIORITY | CONCURRENT] [LOCAL]

  • 如果指定LOW_PRIORITY, 则load
    data语句的执行被延迟,直到没有其他客户端从表中读取数据
  • 如果指定CONCURRENT,如果一个myisam表满足同时插入的条件(该表在中间有空闲块),则当load
    data正在执行时,其他线程会从表中重新获取数据,即使没有其他线程在同时使用本表,这个选项也会略微影响loda
    data的性能
  • 如果指定LOCAL,
    则被认为与连接的客户端有关,文件从客户端读取,并发送到服务器

注意:如果文件在数据库所在的服务器上时,文件必须位于数据库目录中,或者是全体可读(拥有file权限)
  [REPLACE | IGNORE] 
对于有惟一键(或主键)的表操作时,REPLACE和IGNORE关键字用于控制这些输入记录的操作

  • 如果指定了REPLACE,在遇到主键或唯一键时,输入行会替换掉原有行
  • 如果指定了IGNORE,在遇到主键或唯一键时,则输入行会被跳过

注意:如果没有指定这两个选项,两个处理方案。如果指定了local,则发生冲突时运行处理和ignore相同;如果没有指定local,则发生冲突时会有错误,并且之后的文本会被忽略
  [PARTITION (partition_name [, partition_name] …)] 
不详,遇到再补充   [CHARACTER SET charset_name] 
指定连接编码,解析编码,对于中文处理 CHARACTER SET utf8   [{FIELDS | COLUMNS} [澳门新葡亰平台游戏,TERMINATED BY ‘string’] [[OPTIONALLY] ENCLOSED BY ‘char’] [ESCAPED BY ‘char’] ]
如果指定了FIELDS,则(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED
BY)至少指定其中一项,可设置多项

  • TERMINATED BY xxx 指定了属性之间的分隔符
  • OPTIONALLY不详,用到再补充
  • ENCLOSED BY xxx指定了属性值的开闭标签
  • ESCAPED BY xxx 指定了转义字符前缀

注意:如果不指定FIELDS,则默认为FIELDS TERMINATED BY ‘\t’ ENCLOSED BY
” ESCAPED BY
‘\\’。通俗解释属性没有开闭标签,属性值之间的分隔符用制表符,转义字符前缀用反斜线
  [LINES [STARTING BY ‘string’] [TERMINATED BY ‘string’] ]
如果指定了LINES,则(STARTING BY,TERMINATED
BY)至少指定其中一项,可设置多项

  • STARTING BY xxx
    如果希望读入的行都有个共有前缀,从前缀后开始读取,可以设置,如果某行中不包含共有前缀,则该行被跳过
  • TERMINATED BY xxx 行结束符

注意:如果没有指定LINES,则默认为LINES TERMINATED BY ‘\n’ STARTING BY
”。通俗解释以换行符作为行结束符,没有共有前缀
LINES和FIELDS如果都有指定,FIELDS需要放到LINES之前   [IGNORE number {LINES | ROWS}]
用于在问价你的开始处忽略行,比如使用IGNORE 1
LINES跳过一个包含列名称的起始标题行   [(col_name_or_user_var [, col_name_or_user_var] …)]
指定需要插入的属性列表,比如(name,age)   [SET col_name={expr | DEFAULT}, [, col_name={expr | DEFAULT}] …]
SET可以被用于提供来源输入文件以外的值设定
load数据的时候,用当前时间指定某属性的值     load data infile xxx   
 into table xxx     (column1, column2)     set column3
= CURRENT_TIMESTAMP;
对输入文件里的内容赋值给用户变量,然后进行相关操作后再赋值给某个属性   
 load data infile xxx     into table xxx     (column1, column2, @var,
column4)     set column3 = @var/100;     实例 创建测试表 CREATE TABLE
`test` (   `ID` int(11) NOT NULL AUTO_INCREMENT,   `NAME`
varchar(255) NOT NULL DEFAULT ”,   `AGE` int(11) NOT NULL DEFAULT
‘0’,   `ADDTIME` datetime NOT NULL,   `TIMESTAMP` timestamp NOT NULL
DEFAULT ‘0000-00-00 00:00:00’ ON UPDATE CURRENT_TIMESTAMP,   PRIMARY
KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   建立数据文件
‘hehe’    ’12’ ‘pe    ter’    ’12’ ‘sta\’rof’    ’12’
‘ali贵阳ce’    ’12’ ‘te\\st’    ’12’ ‘y\\a\\n’    ’12’
‘lv\\t中国p’    ’12’ ‘p\’vl’    ’12’ ‘ya\\贵州n’    ’14’
‘ya\\n贵州n’    ’14’ ‘ya\\\\贵州n’    ’14’
‘ya\\\\贵州n’    ’14’ ‘l\\    vp’    ’13’ ‘p\\tvl’    ’18’
澳门新葡亰平台游戏 3
澳门新葡亰平台游戏 4
控制台连接mysql执行load data load data infile ‘d:/data.txt’ into table
test character set utf8 fields terminated by ‘\t’ enclosed by “‘”
escaped by ‘\\’ lines terminated by ‘\n’ (NAME, AGE) set ADDTIME
=CURRENT_TIMESTAMP;
澳门新葡亰平台游戏 5

澳门新葡亰平台游戏 6

执行结果   澳门新葡亰平台游戏 7

 

data(sql),loaddatasql
一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了。执行效率上可能…

一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了。执行效率上可能就不太理想了。load
data语句用于高速地从一个文本文件中读取数据,装载到一个表中,相比于前者效率会高很多。

 

参考   以及mysql中文文档5.1整理如下,

 

语法

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}] …]

澳门新葡亰平台游戏 8

 

解析

[LOW_PRIORITY | CONCURRENT] [LOCAL]

  • 如果指定LOW_PRIORITY, 则load
    data语句的执行被延迟,直到没有其他客户端从表中读取数据
  • 如果指定CONCURRENT,如果一个myisam表满足同时插入的条件(该表在中间有空闲块),则当load
    data正在执行时,其他线程会从表中重新获取数据,即使没有其他线程在同时使用本表,这个选项也会略微影响loda
    data的性能
  • 如果指定LOCAL,
    则被认为与连接的客户端有关,文件从客户端读取,并发送到服务器

注意:如果文件在数据库所在的服务器上时,文件必须位于数据库目录中,或者是全体可读(拥有file权限)

 

[REPLACE | IGNORE] 

对于有惟一键(或主键)的表操作时,REPLACE和IGNORE关键字用于控制这些输入记录的操作

  • 如果指定了REPLACE,在遇到主键或唯一键时,输入行会替换掉原有行
  • 如果指定了IGNORE,在遇到主键或唯一键时,则输入行会被跳过

注意:如果没有指定这两个选项,两个处理方案。如果指定了local,则发生冲突时运行处理和ignore相同;如果没有指定local,则发生冲突时会有错误,并且之后的文本会被忽略

 

[PARTITION (partition_name [, partition_name] …)] 

不详,遇到再补充

 

[CHARACTER SET charset_name] 

指定连接编码,解析编码,对于中文处理 CHARACTER SET utf8

 

[{FIELDS | COLUMNS} [TERMINATED BY ‘string’] [[OPTIONALLY] ENCLOSED BY ‘char’] [ESCAPED BY ‘char’] ]

如果指定了FIELDS,则(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED
BY)至少指定其中一项,可设置多项

  • TERMINATED BY xxx 指定了属性之间的分隔符
  • OPTIONALLY不详,用到再补充
  • ENCLOSED BY xxx指定了属性值的开闭标签
  • ESCAPED BY xxx 指定了转义字符前缀

注意:如果不指定FIELDS,则默认为FIELDS
TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY
‘\\’。通俗解释属性没有开闭标签,属性值之间的分隔符用制表符,转义字符前缀用反斜线

 

[LINES [STARTING BY ‘string’] [TERMINATED BY ‘string’] ]

如果指定了LINES,则(STARTING BY,TERMINATED
BY)至少指定其中一项,可设置多项

  • STARTING BY xxx
    如果希望读入的行都有个共有前缀,从前缀后开始读取,可以设置,如果某行中不包含共有前缀,则该行被跳过
  • TERMINATED BY xxx 行结束符

注意:如果没有指定LINES,则默认为LINES
TERMINATED BY ‘\n’ STARTING BY
”。通俗解释以换行符作为行结束符,没有共有前缀

LINES和FIELDS如果都有指定,FIELDS需要放到LINES之前

 

[IGNORE number {LINES | ROWS}]

用于在问价你的开始处忽略行,比如使用IGNORE 1
LINES跳过一个包含列名称的起始标题行

 

[(col_name_or_user_var [, col_name_or_user_var] …)]

指定需要插入的属性列表,比如(name,age)

 

[SET col_name={expr | DEFAULT}, [, col_name={expr | DEFAULT}] …]

SET可以被用于提供来源输入文件以外的值设定

load数据的时候,用当前时间指定某属性的值

    load data infile xxx

    into table xxx

    (column1, column2)

    set column3 = CURRENT_TIMESTAMP;

对输入文件里的内容赋值给用户变量,然后进行相关操作后再赋值给某个属性

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图