怎样提高大批量insert数据的速度
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-05-23 09:44
一个将Excel中的数据导入MySQL的简单方法
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-12-12 22:45
这个方法最简单但不是傻瓜式的方法,需要你对Excel和MySQL都有一点点了解。
当然,我在最后提供了一个作为例子的Excel文件,但仍然需要你会写MySQL的INSERT语句,这样才能调试可能出现的错误。
1.在需要导入的数据最后一列,写入一个Excel公式(例子中是“SQL”下面的单元格,“SQL”是不必要的,仅仅是为了看起来方便)。
=CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",RC[-3],"','",RC[-2],"','",RC[-1],"');")
这样就会生成insert语句,正如你在例子Excel文件中看到的(当你单击SQL下面的单元格时,可以看到公式)。
这个实际上是使用了Excel的CONCATENATE字符串连接函数,将数据生成你需要的SQL语句。RC[-2]是从最后一列(不包括该列)往前数的第二列。
2.将"SQL"下面单元格的公式复制到该列的其它单元格,这样可以看到生成了所需要的所有SQL语句。
3.将最后一列选中,复制数据到一个文本文件,将该文本文件另存为一个.sql文件(别忘了删除第一行的“SQL”)。
4.能够运行sql文件的工具有很多,运行这个文件就可以了。如果没有工具,参考 在windows下批量执行mysql脚本(http://www.albertsong.com/read-21.html)。
使用上面的方法,你需要知道什么样的insert语句对于mysql来说是正确的。
最常见的是日期的格式,如果不转换成字符串,用上面的方法会生成一个整数,这样插入mysql后就不对了。
因此上面的公式改成
=CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",TEXT(RC[-3],"yyyy-mm-dd hh:mm:ss"),"','",RC[-2],"','",RC[-1],"');")
这里用到了TEXT函数来将日期格式化成mysql能接受的日期字符串。
具体请参考例子。
Excel2Mysql.rar (4.56 KB , 下载:4188次)
文件说明如下:
doc.txt--本文
SqlGen.xls--Excel例子文件
create.sql--建表语句
insert.sql--生成的insert语句
function.txt--需要在Excel中使用的函数
写了这么多,实际上就一句话:使用Excel的CONCATENATE函数生成sql语句并执行。
如果懂一点儿VBA可以直接生成insert.sql文件,又扯远了。
其它参考链接:
Excel函数应用之文本/日期/时间函数
http://www0.ccidnet.com/school/office//2001/06/05/70_4379.html
当然,我在最后提供了一个作为例子的Excel文件,但仍然需要你会写MySQL的INSERT语句,这样才能调试可能出现的错误。
1.在需要导入的数据最后一列,写入一个Excel公式(例子中是“SQL”下面的单元格,“SQL”是不必要的,仅仅是为了看起来方便)。
=CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",RC[-3],"','",RC[-2],"','",RC[-1],"');")
这样就会生成insert语句,正如你在例子Excel文件中看到的(当你单击SQL下面的单元格时,可以看到公式)。
这个实际上是使用了Excel的CONCATENATE字符串连接函数,将数据生成你需要的SQL语句。RC[-2]是从最后一列(不包括该列)往前数的第二列。
2.将"SQL"下面单元格的公式复制到该列的其它单元格,这样可以看到生成了所需要的所有SQL语句。
3.将最后一列选中,复制数据到一个文本文件,将该文本文件另存为一个.sql文件(别忘了删除第一行的“SQL”)。
4.能够运行sql文件的工具有很多,运行这个文件就可以了。如果没有工具,参考 在windows下批量执行mysql脚本(http://www.albertsong.com/read-21.html)。
使用上面的方法,你需要知道什么样的insert语句对于mysql来说是正确的。
最常见的是日期的格式,如果不转换成字符串,用上面的方法会生成一个整数,这样插入mysql后就不对了。
因此上面的公式改成
=CONCATENATE("insert into employee(name,birthday,email,hobby)values('",RC[-4],"','",TEXT(RC[-3],"yyyy-mm-dd hh:mm:ss"),"','",RC[-2],"','",RC[-1],"');")
这里用到了TEXT函数来将日期格式化成mysql能接受的日期字符串。
具体请参考例子。
Excel2Mysql.rar (4.56 KB , 下载:4188次)文件说明如下:
doc.txt--本文
SqlGen.xls--Excel例子文件
create.sql--建表语句
insert.sql--生成的insert语句
function.txt--需要在Excel中使用的函数
写了这么多,实际上就一句话:使用Excel的CONCATENATE函数生成sql语句并执行。
如果懂一点儿VBA可以直接生成insert.sql文件,又扯远了。
其它参考链接:
Excel函数应用之文本/日期/时间函数
http://www0.ccidnet.com/school/office//2001/06/05/70_4379.html
标签: MySQL
Oracle 绑定变量的用法
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-18 19:53
关键字: Oracle 绑定变量(Bind Variable )
1.让Oracle自己绑定变量
set serverout on;
set timing on;
declare
l_sql varchar2(2000);
l_count number;
l_param1 varchar2(100);
l_param2 varchar2(100);
begin
l_param1:=’a';
l_param2:=’b';
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_param2;
dbms_output.put_line(l_count);
end;
/
在上面的情况,Oracle会自己绑定变量,即,如果参数保存在一个数组中,select语句放在一个循环中,
select 语句只会编译一次。
像这样
for i in 1..3
loop
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_pa
1.让Oracle自己绑定变量
set serverout on;
set timing on;
declare
l_sql varchar2(2000);
l_count number;
l_param1 varchar2(100);
l_param2 varchar2(100);
begin
l_param1:=’a';
l_param2:=’b';
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_param2;
dbms_output.put_line(l_count);
end;
/
在上面的情况,Oracle会自己绑定变量,即,如果参数保存在一个数组中,select语句放在一个循环中,
select 语句只会编译一次。
像这样
for i in 1..3
loop
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_pa
在windows下批量执行mysql脚本
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-14 21:00
关键字: mysql .sql文件 windows
新建一个文本文件r.txt,改名为r.cmd。
编辑这个文件,内容如下:
rem MySQL_HOME 本地MySQL的安装路径
rem host mysql 服务器的ip地址,可以是本地,也可以是远程
rem port mysql 服务器的端口,缺省为3306
rem user password 具有操作数据库权限的用户名和密码,如root
rem default-character-set 数据库所用的字符集
rem database 要连接的数据名,这里用的test
rem test.sql 要执行的脚本文件,这里为test.sql
rem mysql 后面的应该放在一行。
set MySQL_HOME=C:\mysql-4.1.10-win32
set PATH=%MySQL_HOME%\bin;%PATH%
mysql --host=192.168.0.66 --port=3306 --user=root --password=123 --default-character-set=utf8 test<test.sql
新建一个文本文件r.txt,改名为r.cmd。
编辑这个文件,内容如下:
rem MySQL_HOME 本地MySQL的安装路径
rem host mysql 服务器的ip地址,可以是本地,也可以是远程
rem port mysql 服务器的端口,缺省为3306
rem user password 具有操作数据库权限的用户名和密码,如root
rem default-character-set 数据库所用的字符集
rem database 要连接的数据名,这里用的test
rem test.sql 要执行的脚本文件,这里为test.sql
rem mysql 后面的应该放在一行。
set MySQL_HOME=C:\mysql-4.1.10-win32
set PATH=%MySQL_HOME%\bin;%PATH%
mysql --host=192.168.0.66 --port=3306 --user=root --password=123 --default-character-set=utf8 test<test.sql
标签: MySQL
- 1










