当前位置:首页 » 数据仓库 » 批量存入数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

批量存入数据库

发布时间: 2022-11-16 22:35:36

❶ 如何将批量的数据存入sql数据库

在一些数据量比较大,而且操作数据库频繁的。此时需要将数据表datatable整块的存入数据库中。
不多说,直接上代码:
首先得新建一个数据库
DataTable
once_rec_date
=
new
DataTable();
这个数据库得跟目标数据库的列的位置和大小都得一样。特别是类型,和位置。
就是列的位置和目标数据库的位置,顺序得
一模一样。因为都是块存储,所以地址什么的都得一样,千万不能少一列,自增列可以空在那边。
在初始化中初始化该表
once_rec_date.Columns.Add("id", typeof(int));
once_rec_date.Columns.Add("RevData_cmd", typeof(int));
once_rec_date.Columns.Add("Node", typeof(int));
once_rec_date.Columns.Add("Data", typeof(String));
once_rec_date.Columns.Add("Ssingle", typeof(int));
once_rec_date.Columns.Add("IsWiressData", typeof(int));
once_rec_date.Columns.Add("Datatime", typeof(DateTime));
once_rec_date.Columns.Add("Receivetime", typeof(DateTime));
once_rec_date.Columns.Add("IsMatch", typeof(int));

❷ 怎么高效率批量插入1000条数据到数据库

常见的insert语句,向数据库中,一条语句只能插入一条数据:
insert into persons
(id_p, lastname , firstName, city )
values(204,'haha' , 'deng' , 'shenzhen');
(如上,仅插入了一条记录)

怎样一次insert插入多条记录呢?

使用示例:
insert into persons
(id_p, lastname , firstName, city )
values
(200,'haha' , 'deng' , 'shenzhen'),
(201,'haha2' , 'deng' , 'GD'),
(202,'haha3' , 'deng' , 'Beijing');
这样就批量插入数据了, 遵循这样的语法,就可以批量插入数据了。

❸ 如何用SQL语句将数据批量插入数据库

这种情况使用xml来进行批量插入.
1.asp.net页面上抓取数据,转换成xml字符串
2.将这个字符串作为参数传给存储过程
3.存储过程里,将这个xml读取成临时表
4.整个临时表插入到目标数据表中,这个过程可以使用sql
server的事务;其实在这里用不用事务问题都不大了,因为存储过程出错,数据插不进去的,还会抛出异常到asp.net后台,让后台进行处理异常.
您用游标或asp.net代码来循环,速度会比较慢的.

❹ 解析txt文件,将文件中明细批量插入mysql数据库表中,怎么做

批量写入,提高效率,最简单直接的办法就是:

txt文本
作为一个数据源处理,而不是文件读取,这样,通过数据源,就可以直接批量读取为一个recordset,然后,直接写入数据库了。
ps:这要求
文本文件格式
非常规律,如果不行,自己尝试在内存里面构建recordset吧。

❺ 如何在数据库中批量插入数据

可以使用oracle sql loader批量导入数据:
生成测试数据的EXCEL文件,把EXCEL文件另存为CSV(逗号分隔)(*.csv),控制文件设置为用逗号分隔。
示例:
LOAD DATA
INFILE ‘d:\car.csv’
APPEND INTO TABLE t_car_temp
FIELDS TERMINATED BY ","
(phoneno,vip_car)
保存为input.ctl
最后在命令行下输入:
C:\>sqlldr userid=system/manager
control=input.ctl(在unix环境下亦同)
默认日志文件名为:input.log
默认坏记录文件为:input.bad

❻ MYSQL批量插入数据库实现语句性能分析

假定我们的表结构如下
代码如下

CREATE
TABLE
example
(
example_id
INT
NOT
NULL,
name
VARCHAR(
50
)
NOT
NULL,
value
VARCHAR(
50
)
NOT
NULL,
other_value
VARCHAR(
50
)
NOT
NULL
)
通常情况下单条插入的sql语句我们会这么写:
代码如下

INSERT
INTO
example
(example_id,
name,
value,
other_value)
VALUES
(100,
'Name
1',
'Value
1',
'Other
1');
mysql允许我们在一条sql语句中批量插入数据,如下sql语句:
代码如下

INSERT
INTO
example
(example_id,
name,
value,
other_value)
VALUES
(100,
'Name
1',
'Value
1',
'Other
1'),
(101,
'Name
2',
'Value
2',
'Other
2'),
(102,
'Name
3',
'Value
3',
'Other
3'),
(103,
'Name
4',
'Value
4',
'Other
4');
如果我们插入列的顺序和表中列的顺序一致的话,还可以省去列名的定义,如下sql
代码如下

INSERT
INTO
example
VALUES
(100,
'Name
1',
'Value
1',
'Other
1'),
(101,
'Name
2',
'Value
2',
'Other
2'),
(102,
'Name
3',
'Value
3',
'Other
3'),
(103,
'Name
4',
'Value
4',
'Other
4');
上面看上去没什么问题,下面我来使用sql语句优化的小技巧,下面会分别进行测试,目标是插入一个空的数据表200W条数据
第一种方法:使用insert
into
插入,代码如下:
代码如下

$params
=
array('value'=>'50');
set_time_limit(0);
echo
date("H:i:s");
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
};
echo
date("H:i:s");
最后显示为:23:25:05
01:32:05
也就是花了2个小时多!
第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13
23:04:00
,一共8分13秒
,代码如下:
代码如下

echo
date("H:i:s");
$connect_mysql->query('BEGIN');
$params
=
array('value'=>'50');
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
if($i%100000==0){
$connect_mysql->query('COMMIT');
$connect_mysql->query('BEGIN');
}
}
$connect_mysql->query('COMMIT');
echo
date("H:i:s");
第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用
insert
into
table
()
values
(),(),(),()然后再一次性插入,如果字符串太长,
则需要配置下MYSQL,在mysql
命令行中运行
:set
global
max_allowed_packet
=
2*1024*1024*10;消耗时间为:11:24:06
11:25:06;
插入200W条测试数据仅仅用了1分钟!代码如下:
代码如下

$sql=
"insert
into
twenty_million
(value)
values";
for($i=0;$i<2000000;$i++){
$sql.="('50'),";
};
$sql
=
substr($sql,0,strlen($sql)-1);
$connect_mysql->query($sql);
最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

❼ 如何批量导入数据到Sqlite数据库

具体的操作步骤如下:
首先,用Access打开mdb文件。导出成txt文件,由于本人的SQLite是在linux下使用,所以编码要改成Unicode,分隔符用逗号分割(逗号分割是为了后期导入到SQLite中)
第二步,将文件导入到linux系统下通过终端sqlite3abc.db
SQLiteversion3.6.22
Enter".help"forinstructions
";"sqlite
进入一个已经建好的数据库中
sqliteCREATETABLEeee(idINTEGERPRIMARYKEY,
numberNUMERIC,codeNUMERIC,cityTEXT,citytypeTEXT);
创建一个表,这个表的字段和数据类型要和txt文件中的数据和数据类型相对应。
sqlite.separator","//设置分割符为逗号,和之前导出设置的分隔符保持一致
sqlite.importlist.txteee//将list.txt上的内容导入到表eee中
到此,已成功地将批量数据插入到SQLite中了。

❽ 数据库如何批量插入数据

解决方法:
添加事务处理,把5000条插入作为一个事务
dataBase.beginTransaction(); //手动设置开始事务
//数据插入操作循环
dataBase.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交
dataBase.endTransaction(); //处理完成

将数据库“倒出来”:
sqlite3 film.db ".mp" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库
备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会需要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;

❾ SQLSERVER数据库中批量导入数据的几种方法

我们通过SQL脚本来插入数据,常见如下四种方式。

方式一:一条一条插入,性能最差,不建议使用。

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏1段',160);INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏2段',260);
......

方式二:insert bulk

语法如下:

方式四:拼接SQL

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛栏1段',160)
,(newid(),'牛栏2段',260)
......

❿ 如何把csv文件批量导入到mysql数据库

通过命令行导入(要求列与列之间以 英文逗号 分割,若字段中含有 , 则以 " 包裹)

load data infile 'D:/mysql-5.7.29-winx64/files/ratings_5.csv' into table ratings fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';
踩坑一:文件路径用 \ 分割会报错,用 / 可(用 \\ 应该也可)
踩坑二:load data 命令报错
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
在 my.ini 中加入(空字符串代表允许从一切目录导入)

[mysqld]
secure-file-priv=''
然后再 Windows 的服务中重新启动 mysql

踩坑三:csv 文件中第一行是诸如 userId 这样的列名
如果你的 csv 文件不大,直接使用 notepad++ 打开后删除第一行即可

但在我们这里,千万级别的文件 notepad++ 无法打开,这时可以考虑两种方法

1. 将 csv 文件传入 Linux 服务器删去第一行

由于不知道如何在 Win 10 中做这个操作,只能通过 Linux 中转执行

sed -i '1d' ratings.csv
检验是否成功,可以打印出第一行观察

cat ratings.csv | head -n 1
2. 通过工具把大的 csv 分成多个 notepad 能够打开的较小文件,对第一个文件删除第一行并依次导入

工具:splitcsv

亲测 5000000 条数据的 csv 文件可以在 notepad++ 中打开(只能同时打开 3 个)

这个工具还有个小坑:ratings_0.csv 的最后一行和 ratings_1.csv 的第一行是重复的,请手动删除