首页技术insert into values 多行(批量insert into)

insert into values 多行(批量insert into)

编程之家2026-07-03671次浏览

今天给各位分享insert into values 多行的知识,其中也会对批量insert into进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

insert into values 多行(批量insert into)

怎样在sql中用insert语句往表中插入多行

如果数据很多的话建议可以用别的方法特别是数据量比较多的时候

ORACLE有一个SQLLODER功能

1.生成百万级的sql,保存SQL文件为getobject.sql

select a.owner||',"'||a.object_name||'",'||a.object_id||','||to_char(a.created,'yyyy-mm-dd hh24:mi:ss')||','||a.status

from dba_objects a,(select rownum from dual connect by rownum<= 20);

2.sql数据转换成数据文件,保存脚本为call.sql

insert into values 多行(批量insert into)

set echo off

set term off

set trimout on

set trimspool on

set pagesize 0

set feedback off

insert into values 多行(批量insert into)

set heading off

spool c:\getobject.csv

@c:\getobject.sql

set spool off

set heading on

set feedback on

set trimspool off

set trimout off

set term on

set echo on

注释:

set colsep'';//-域输出分隔符

set echo off;//显示start启动的脚本中的每个sql命令,缺省为on

set echo on//设置运行命令是是否显示语句

set feedback on;//设置显示“已选择XX行”

set feedback off;//回显本次sql命令处理的记录条数,缺省为on

set heading off;//输出域标题,缺省为on

set pagesize 0;//输出每页行数,缺省为24,为了避免分页,可设定为0。

set linesize 80;//输出一行字符个数,缺省为80

set numwidth 12;//输出number类型域长度,缺省为10

set termout off;//显示脚本中的命令的执行结果,缺省为on

set trimout on;//去除标准输出每行的拖尾空格,缺省为off

set trimspool on;//去除重定向(spool)输出每行的拖尾空格,缺省为off

set serveroutput on;//设置允许显示输出类似dbms_output

set timing on;//设置显示“已用时间:XXXX”

set autotrace on-;//设置允许对执行的sql进行分析

set verify off//可以关闭和打开提示确认信息old 1和new 1的显示.

3.运行call.sql生成数据文件

sqlplus hxadmin/secret as sysdba;

@c:\call.sql

4.初始化环境,创建导入表OBjects

create table OBJECTS

(

OWNER VARCHAR2(50),

OBJECT_NAME VARCHAR2(50),

OBJECT_ID NUMBER,

STATUS VARCHAR2(10),

CREATED DATE

)

5.生成导入控制文件,保存控制文件为ldr_object.ctl

LOAD DATA

INFILE getobject.csv

TRUNCATE INTO TABLE OBJECTS

FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"' TRAILING NULLCOLS

(OWNER,

OBJECT_NAME,

OBJECT_ID,

CREATED date'yyyy-mm-dd hh24:mi:ss',

STATUS)

6.执行sqlldr命令

C:> sqlldr hxadmin/secret control= ldr_object.ctl direct= true

7.查看ldr_object.log日志文件

这个例子是我自己做的一个100W行的数据插入也只要10几秒。希望你能用到。

mysql insert into语句中, values()是什么作用

sql语句中,添加记录的语法为:insert into表名(col1,col2....coln)values(value1,value2.....valuen);

其中,如果你插入的每一列都是顺序插入,无一缺漏的话,(col1,col2...coln)可以省略。

也就是上式也可以简化为:insert into表名values(value1,value2.....valuen);

看了你写的sql代码,问题出在insert into的整体语句出现在了不该出现的地方,只需做一点小改动即可解决,如下图:

解析:insert into语句需要在user表已经存在的情况下才可以使用。而你原来的语句中,将上图2中的语句插入到了create table user的语句中,致使create table user语句未能成功执行,所以才会报错。

而将“INSERT INTO user(uid,tel) values('甲','3354986');”整条语句直接拿出来放在“ENGINE=InnoDB DEFAULT CHARSET=gbk;”后面之后,整个sql就可以顺利执行了。

扩展资料:

当mysql大批量插入数据的时候就会变的非常慢,mysql提高insert into插入速度的方法有三种:

1、第一种插入提速方法:

如果数据库中的数据已经很多(几百万条),那么可以加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M

举例:bulk_insert_buffer_size=100M;

2、第二种mysql插入提速方法:

改写所有 insert into语句为insertdelayed into

这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。

3、第三个方法:一次插入多条数据:

insert中插入多条数据,举例:

insert into table values('11','11'),('22','22'),('33','33')...;

oracle 多列 列转行

Oracle11g行列互换 pivot和 unpivot说明在Oracle 11g中,Oracle又增加了2个查询:pivot(行转列)和unpivot(列转行)

参考:、一下,网上有一篇比较详细的文档:

pivot列转行

测试数据(id,类型名称,销售数量),案例:根据水果的类型查询出一条数据显示出每种类型的销售数量。

?

123456789

create table demo(id int,name varchar(20),nums int);----创建表insert into demo values(1,'苹果', 1000);insert into demo values(2,'苹果', 2000);insert into demo values(3,'苹果', 4000);insert into demo values(4,'橘子', 5000);insert into demo values(5,'橘子', 3000);insert into demo values(6,'葡萄', 3500);insert into demo values(7,'芒果', 4200);insert into demo values(8,'芒果', 5500);

分组查询(当然这是不符合查询一条数据的要求的)

?

1

select name, sum(nums) nums from demo group by name

行转列查询

?

1

select* from(select name, nums from demo) pivot(sum(nums) for name in('苹果'苹果,'橘子','葡萄','芒果'));

注意: pivot(聚合函数 for列名 in(类型)),其中 in(‘’)中可以指定别名,in中还可以指定子查询,比如 select distinct code from customers

当然也可以不使用pivot函数,等同于下列语句,只是代码比较长,容易理解

?

12

select* from(select sum(nums)苹果 from demo where name='苹果'),(select sum(nums)橘子 from demo where name='橘子'),(select sum(nums)葡萄 from demo where name='葡萄'),(select sum(nums)芒果 from demo where name='芒果');

unpivot行转列

顾名思义就是将多列转换成1列中去

案例:现在有一个水果表,记录了4个季度的销售数量,现在要将每种水果的每个季度的销售情况用多行数据展示。

创建表和数据

?

1234567

create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);insert into Fruit values(1,'苹果',1000,2000,3300,5000);insert into Fruit values(2,'橘子',3000,3000,3200,1500);insert into Fruit values(3,'香蕉',2500,3500,2200,2500);insert into Fruit values(4,'葡萄',1500,2500,1200,3500);select* from Fruit

列转行查询

?

1

select id, name, jidu, xiaoshou from Fruit unpivot(xiaoshou for jidu in(q1, q2, q3, q4))

注意: unpivot没有聚合函数,xiaoshou、jidu字段也是临时的变量

好了,关于insert into values 多行和批量insert into的问题到这里结束啦,希望可以解决您的问题哈!

但是显示没有 显示不出来margin四个参数,margin的四个参数顺序