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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在sql中用insert语句往表中插入多行相关的知识,希望对你有一定的参考价值。

我想往我的销售表中插入
0001 电视 500 1000
0002 电脑 4000 2000等多行数据!请各位高手用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

set echo off
set term off
set trimout on
set trimspool on
set pagesize 0
set feedback off
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几秒。希望你能用到。
参考技术A insert into 销售表(字段1,字段2,字段3,字段4) values ('0001','电视','500','1000')
insert into 销售表(字段1,字段2,字段3,字段4) values ('0002','电脑','4000','2000')

依次类推,是这意思么?
参考技术B insert 表名 (列名,列名)

select 值1,值2 union
select 值1,值2 union
select 值1,值2
参考技术C insert into tb
select '0001', '电视', 500, 1000
union all
select '0002', '电脑', 4000, 2000
union all
select ..............
参考技术D INSERT INTO student VALUES(name, age, sex),
('哈哈', 21, '男'),
('呵呵', 22, '女');

Sql-Server用insert插入多行数据-语法和例子

插入多行数据,原表中有多条数据,再建新表很麻烦,就要用到以下语法:


通过Insert select 语句将现有的表的数据添加到已存在的表中
语法:Insert into<新的表名>(列名)
select<列名>
from<旧的表名>
注意:AddressList表必须预先创建,并具有列名

通过select into 语句将现有的表的数据添加到新表中
语法:Select<列名> -- 旧表的列名
Into<新的表名>
from<旧的表名>

 









以上是关于怎样在sql中用insert语句往表中插入多行的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句 存在就更新不存在就插入

在存储过程里创建临时表,往表中直接插入数据

数据库往表中插入数据报错

mysql不能往表中的列插入中文,求大神解答,在线等~~~

数据库 分别使用一条Transact-SQL语句完成下来操作拜托各位了 3Q

thinkphp5.0中往表中添加多条记录,怎么获取到所有添加的ID?