Code前端首页关于Code前端联系我们

批量向mysql数据库插入数据,如何批量向mysql插入数据

terry 2年前 (2023-09-30) 阅读数 39 #Mysql
文章标签 Mysql

本文列表:

  • 1.mysql批量数据插入
  • 2、如何将大批量数据导入mysql数据库?
  • 3、如何批量向mysql数据库插入数据
  • 4、批量插入MYSQL到数据库,实现命令性能分析
  • 5、如何批量向mysql数据库插入数据。如果A表有字段ID姓名密码email,如何插入大量成员?
  • 6.如何批量导入csv文件到mysql数据库

mysql批量数据插入

是否可以使用UPDATE而不是INSERT INTO? 3000个数据导入看起来并不算多

如果要这么说的话,确实很难,因为数据类型不一样,又不能使用数组。似乎没有任何技巧。

但是你可以直接使用EXCEL中的CONCATENATE()函数将数据转换为SQL输入语句

然后将这个输入语句脚本放在像Iinsert.sql这样的文件中

然后使用类似下面的代码将此脚本导入MYSQL中执行

!$db-select_db('databasename')exit($db-error()); //选择当前数据库

if(!file_exists(./insert.sql "))exit("加载\"insert.sql\"失败!");

$import_sql=file_get_contents("pms.sql" ,dirname(__FILE__)); //打开SQL文件并读取

$explode =explode(";",$import_sql);

$cnt = count($explode);

for ($i =0;$i$cnt ;$i++){

!$ db-query($explode[$i])exit("导入数据表失败!");

}

echo "表数据已创建... brbr\n";

如何向mysql数据库添加数据导入大批量数据?

在导入时禁用索引生成,应该会更快。

导入期间不要创建索引。

8G数据应该不会这么慢。

阅读部分sql语句文件,看一下。创建表语句中应该有一个索引部分。删除它!

仅创建表格并输入数据。两件事情。

另请参阅数据库是否有外键?

尝试在数据插入过程中删除外键分配。

数据插入完成后添加索引和外键,应该可以提高读写性能。

捕获部分数据,例如 100 Mb。

插入并尝试,您可以提前预计总时间。

还有,你确实需要买一台更好的电脑或者租一台,导入完数据后直接复制msyql库文件在自己的电脑上运行就可以了。

emm...

然后添加一些信息。首先你需要了解原始sql文件中的内容。 ,执行了哪些类型的操作?

您可能需要编写一些小工具(例如 c 或其他语言)来零碎地读取和处理文件。

8G...

嗯,还好。

现在内存足够大了,不然直接用软件打不开。

如果你只有8G就可以直接用软件打开.

停止索引实际上可以加快数据插入速度。

推荐尝试!

如何批量插入数据到mysql数据库

定期插入语句,一条语句只能向数据库中插入一条数据:

insert into people

(id_p, surname, first name, city)

values(204,'haha', ' deng', 'shenzhen');

(如上只插入了一条记录)

如何一次插入多条记录?

使用示例:

插入人员

(id_p, Lastname , Firstname, City )

(200,'haha' , 'deng' , 'sh (201,' haha2' , 'deng' , 'GD'),

(202,'haha3' , 'deng' , '北京');

这样就可以批量插入数据了,按照这个语法,就可以插入数据了批量插入。

启动成功,截图:

据说开发程序时,一次插入多条数据比一条一条插入数据效率高很多

所以开发程序时就用这种批量插入,也挺好的

该命令在 MySQL 5 和 postgreSQL 9.3 中执行。

批量插入MYSQL数据库进行命令性能分析

假设我们的表结构如下

代码如下

CREATE

TABLE

example( id‼‼T

NULL,

名称

VARCHAR(

50

)

NOT

NULL,

VARCHAR(❙‼)‼️‼️❙‼️‼️‼️other_value

VARCHAR( ? (示例标识符,

名称,

值,

其他值)

100,‼(100,'值

1',

'其他

1');

mysql允许我们批量向sql命令中插入数据,如下:

代码如下 INSERT

INTO

例如 Le (example_id,

名称,

值,

OTHER_VALUE)❙(Na,'00)

1',

'值

1',

'其他

1'),

(101,

'姓名

2',e'u,

'其他

2'),

(102,

'姓名

3',

'数值

3'‼️'),

(103 ,

'姓名

4',

'数值

4',

'其他

4');4');列顺序和表列顺序一致的话,也可以省略列名的定义。下面的sql

代码如下

INSERT

INTO

示例

VALUES

(100,

'Name

1',

'Value

1',

'

'其他

'名称

2',

'值

2',

'其他

2'),

(102,

'名称

3',

'值

3',

'其他

3'),

(103,'' 4 ',

'值

4',

'其他

4');

上面的好像没有问题。现在我将使用一些技巧来优化 SQL 语句。测试时,目标是向空数据表中插入 200 万条数据。

array('value'='50');

set_time_limit(0);

echo

date("H :是”);

for($i=0; $i2000000;$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;$i2000000;$i++){

$connect_my -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

全局

max_allowed_pa​​cket

=

2*1024*1024*10;消费时间为:11:24:06

11:25:06;

插入200万条测试数据只需要1分钟!代码如下:

代码如下

$sql=

"insert

into

twenty_million

(value)

$i=0 ;$i2000000; $i++){

$sql.="('50'),";

};

$sql

=

substr($sql, 0,strlen($sql)- 1);

$connect_mysql-query($sql);

综上所述,在插入大量数据时,第一种方法无疑是最差的,而第二种方法实际上是最差的。应用广泛,第三种方法比较适合插入测试数据或者其他要求不高的情况,而且速度确实很快。 ?提示输入适当的密码

2。以下命令可能对您有用。当你想更改数据库指令

mysqluse

database_name

然后使用以下命令

mysqlsource

d:datafilename.sql

当然你需要知道文件的路径并正确使用

进入mysql

安装的bin目录的子目录。

输入import sql执行命令。

例如:

你的mysql

安装在

d上:mysql

步骤如下:

开始❙‼️运行- 输入CMD

D:Cd

mysqlbin

mysql

-u-u-u

-root

-test-p123456 ‼‼加载更多

如何将导入csv文件批量导入到mySQL数据库中

通过命令行导入(需要用逗号分隔列,如果字段包含,则将其包裹在“)

将输入数据集 'D:/mysql-5.7.29-winx64/files/ ratings_5.csv' 加载到表评级字段终止 ',' 可选关闭 '"' 终止 '"' 行终止 '\r\n' ;

陷阱一:文件路径如果用\分隔,会报错。可以使用 / (应该也可以使用 \\)

陷阱 2:加载数据命令报错

ERROR 1290 (HY000):MySQL 服务器正在使用 --secure-file -priv 运行所以它不能执行这个命令

添加到my.ini(空字符串表示允许从任何目录导入)

[mysqld]

secure-file -priv=''

然后在windows中重新启动mysql service

陷阱三:csv文件第一行是列名,例如userId

如果你的csv文件不大,直接使用。打开记事本后,删除第一行++

但是在我们的例子中,notepad++无法打开千万级文件。这种情况,可以考虑两种方式

1。将csv文件传输到Linux服务器并删除第一行

由于我不知道如何在Win 10中执行此操作,所以我只能通过Linux传输

sed -i '1d'评级来完成。 csv

检查是否成功,可以打印第一行来观察

cat评估.csv |头 -n 1

2。使用工具将大 csv 拆分为多个可以在记事本中打开的较小文件。把第一个文件第一行删除,逐个导入

工具:splitcsv

亲测500万条数据的csv文件可以用notepad++打开(只能同时打开3个)

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

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门