Questions tagged «insert»

SQL中的核心语句可以完成以下操作:将数据插入表中。

1
修复表结构以避免出现“错误:重复的键值违反唯一约束”
我有这样创建的表: -- -- Table: #__content -- CREATE TABLE "jos_content" ( "id" serial NOT NULL, "asset_id" bigint DEFAULT 0 NOT NULL, ... "xreference" varchar(50) DEFAULT '' NOT NULL, PRIMARY KEY ("id") ); 稍后,插入一些指定ID的行: INSERT INTO "jos_content" VALUES (1,36,'About',...) 稍后,将插入一些没有id的记录,它们将失败并显示错误: Error: duplicate key value violates unique constraint。 显然,id被定义为一个序列: 每个失败的插入都会增加序列中的指针,直到它递增到不再存在的值并且查询成功为止。 SELECT nextval('jos_content_id_seq'::regclass) 表定义有什么问题?解决此问题的明智方法是什么?

2
对重复键不执行任何操作
我将LuaSQL与PtokaX API插入下表中。 CREATE TABLE `requests` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `ctg` VARCHAR(15) NOT NULL, `msg` VARCHAR(250) NOT NULL, `nick` VARCHAR(32) NOT NULL, `filled` ENUM('Y','N') NOT NULL DEFAULT 'N', `dated` DATETIME NOT NULL, `filldate` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `nick_msg` (`nick`, `msg`), UNIQUE INDEX `ctg_msg` …

4
SELECT INTO语句的进度
我们的ETL流具有长期运行的SELECT INTO语句,该语句正在动态创建一个表,并在其中填充了几亿条记录。 该语句看起来像 SELECT ... INTO DestTable FROM SrcTable 为了便于监视,我们希望大致了解该语句在执行过程中的进度(大约行数,写入的字节数或类似的值)。 我们尝试了以下方法,但无济于事: -- Is blocked by the SELECT INTO statement: select count(*) from DestTable with (nolock) -- Returns 0, 0: select rows, rowmodctr from sysindexes with (nolock) where id = object_id('DestTable') -- Returns 0: select rows from sys.partitions where object_id = …

1
针对大量插入和bytea更新优化PostgreSQL
我们拥有(软件​​): 具有基本配置的PostrgeSQL 9.3(中没有更改postgresql.conf) Windows 7 64位 硬件: 英特尔酷睿i7-3770 3.9 GHz 32 Gb RAM WDC WD10EZRX-00L4HBAta驱动器(1000Gb,SATA III) 因此,我们必须加载到数据库aprox中。100.000.000行(带bytea列),以及更简单的500.000.000行(无LOB)。varchar在第一个表上有2个索引(长度为13、19),varchar在第二个表上有2 个索引(长度为18,10)。每个表还具有用于ID生成的序列。 到目前为止,这些操作是使用8个连接进行的,并具有5​​0个JDBC批处理大小。下图演示了系统负载:postgresql进程的负载为零。加载24小时后,我们仅加载了1000万行,这是非常缓慢的结果。 我们正在寻求有关调整PostrgreSQL配置的帮助,以实现以下目的: 1)为了超快地加载此数据量,这是一次操作,因此可以是临时配置 2)对于生产模式,通过它们的索引对这2个表进行适量的SELECT,而无需联接和排序。

3
可怜的基数估计使INSERT无法进行最少的记录?
为什么第二个INSERT语句比第一个语句慢5倍? 从生成的日志数据量来看,我认为第二个不符合最小日志记录的条件。但是,《数据加载性能指南》中的文档指出,两个插入都应该能够被最小限度地记录。因此,如果最小日志记录是关键性能差异,那么为什么第二个查询不符合最小日志记录的条件?可以采取什么措施来改善这种情况? 查询#1:使用INSERT ... WITH(TABLOCK)插入5MM行 考虑以下查询,该查询将5MM行插入堆中。该查询在中执行1 second并生成64MB事务日志数据,如所报告sys.dm_tran_database_transactions。 CREATE TABLE dbo.minimalLoggingTest (n INT NOT NULL) GO INSERT INTO dbo.minimalLoggingTest WITH (TABLOCK) (n) SELECT n -- Any table/view/sub-query that correctly estimates that it will generate 5MM rows FROM dbo.fiveMillionNumbers -- Provides greater consistency on my laptop, where other processes are running OPTION …

1
IDENTITY_INSERT如何影响并发性?
我正在尝试使用第三方第三方SAP附加组件来帮助客户,该附加组件存在发布故障并且已不再支持。 在某些情况下,它将存档和不完整的帖子从发布队列表存档到发布存档表。我需要将这些存档结果移回队列。 队列ID是一个标识列,我希望保持不变。 问题是,如果我关闭了identity_insert on / insert / identity_insert,那么与创建队列条目并期望identity列自动生成的进程的并发性有什么期望? 任何最好的方式来演示这种行为的指针也将不胜感激。

5
使用INSERT_IDENTITY插入select到多个相关表中
好,设置场景。我有三个表,( Table1,Table2和DataTable),我想插入Table1和Table2使用DataTable作为源。所以对于每一行DataTable我都想要在Table1和中一行Table2,并且Table2需要id从Table1...中插入(PK)。 如果我要这样做... INSERT INTO Table1 SELECT A, B, C FROM MyTable INSERT INTO Table2 SELECT IDENTITY_INSERT(), D, E, F FROM MyTable 我将获得ID最后插入的记录的Table1。 是CURSORor WHILE循环的唯一方法吗?

2
如何配置MySQL Innodb每小时处理1000次插入?
我的网站访问量很高,每小时可能会插入数千条新记录。 这个错误使网站瘫痪: PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction: INSERT INTO {location_instance} (nid, vid, uid, genid, lid) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4); Array ( [:db_insert_placeholder_0] => 1059 [:db_insert_placeholder_1] => 1059 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] => cck:field_item_location:1059 [:db_insert_placeholder_4] => 1000 ) 如果MySQL无法处理这种类型的负载,我将感到非常惊讶。那么,我的问题是,这是数据库问题吗?如何配置MySQL以处理这么大的流量? …


3
大批量插入速度
在我的应用程序中,我的INSERT似乎花费了大量时间。我有大量的对象(〜40-50,000)要插入表中。 让我们拿一个样品表 CREATE TABLE bill ( id BIGINT(20) PRIMARY KEY, amount INT(11) DEFAULT 0, bill_date DATETIME DEFAULT NOW(), INDEX (bill_date) ) ENGINE=InnoDB 以3行作为我的批处理大小,以下是我可以想到的插入方法 方法1-构造并击发3个原始插件 INSERT INTO bill (amount, bill_date) VALUES (10, '2012-01-01 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (20, '2012-01-02 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (40, '2013-02-05 …
10 mysql  innodb  insert  java  jdbc 

2
如何通过表字段的组合使用唯一键?
看看下面的sqlfiddle:http ://sqlfiddle.com/#!2/dacb5/1 CREATE TABLE contacts ( id int auto_increment primary key, name varchar(20), network_id int, network_contact_id int ); INSERT INTO contacts (name, network_id, network_contact_id) VALUES ('John', 4, 10), ('Alex', 4, 11), ('Bob', 4, 12), ('Jeff', 4, 45), ('Bill', 7, 11), ('Walter', 7, 45), ('Jessie', 7, 360) ; 我有一个基本的联系表。该network_id和network_contact_id字段包含链接到其他表的ID号码。 我希望能够运行INSERT IGNORE查询,此表,但我想用的组合network_id,并network_contact_id作为唯一键来匹配。 …

2
Oracle如何针对一个表处理多个并发INSERT
我试图更深入地了解Oracle 11g。我的问题很简单:Oracle如何处理试图同时将记录插入单个表的两个会话。 例如,INSERT A在表1的1:00 PM运行。它需要5分钟才能完成。INSERT B在表1上于1:02 PM执行。需要1分钟才能完成。 会发生什么?Oracle将在INSERT A完成之后将INSERT B排队等待执行吗?INSERT B是否将与INSERT A同时运行? 谢谢!
8 oracle  insert 

1
CASE语句中的空值
在学习70-461考试时,我正在玩SSMS中的一些东西,以学到更多知识,并且遇到了一些麻烦。我正在尝试创建一个表以供使用,因此我不必更改/删除AdventureWorks或TSQL2012数据库中任何已创建的表。在实际创建要使用的表之前,我已经创建了一个临时表来测试我的代码,这是我用来在表中插入值的代码: DECLARE @i INT = 1 WHILE @i < 10 BEGIN INSERT INTO #TestEmployeeCountry VALUES ( SUBSTRING('ABCDEFGHIJKLMNOP', @i, 1), CASE (SELECT ABS(CHECKSUM(NEWID()))%10 +1) WHEN 1 THEN 'USA' WHEN 2 THEN 'CANADA' WHEN 3 THEN 'MEXICO' WHEN 4 THEN 'UK' WHEN 5 THEN 'FRANCE' WHEN 6 THEN 'SPAIN' WHEN 7 THEN …

1
无法在ID处插入行,但行不存在
这是我面临的怪异问题。我正在尝试使用以下查询输入数据 insert into product_product (id, product_tmpl_id, make_equip, model_equip, name_template, serial_num_equip, location_equip, issue_date_equip, issue_to_equip, remarks_equip, pr, ch, categ_id,valuation) values (700,700,'Nikon','Action 10x50 Lookout','Nikon Action 10x50 Lookout','671386','40 Wall St.','5/13/2004 12:00:00 AM','','OM''s OFFICE',62,72,502,'manual periodic'); 我得到错误: ERROR: duplicate key value violates unique constraint "product_product_pkey" DETAIL: Key (id)=(700) already exists. ********** Error ********** ERROR: duplicate key …

2
SQL Server表插入性能优化
设置 在一个数据仓库中,我将一个事实表连接到20个维度。事实表具有3200万行和30列。这是一个临时暂存表,因此我不必与其他正在读取或写入该表的用户打交道。我从基础表中选择10列,并从各个维度中选择20列。尺寸表很小(介于3到15.000行之间)。连接的字段都是整数和nvarchars。我使用SELECT ... INTO语句。表上没有索引。 该查询的执行速度太慢,无法使用。 尝试过的解决方案 因为查询处理时间太长,所以我尝试了以下解决方案: 将20个联接拆分为5个表上的4个联接。但是查询性能仍然很低。 将索引放在外键列上。没有明显的时间减少。 确保联接条件的字段为整数。我注意到性能提高了25%。不完全是我要寻找的。 使用insert into语句代替select into。尽管数据库处于简单恢复模式,但由于日志文件增长而导致性能更差。 这些发现使我包括了实际的执行计划,该计划表明89%的成本在表插入中。其他成本是对事实表进行8%的表扫描,对内部联接进行2%的哈希匹配。 问题 缓慢插入表的可能原因是什么? 没有执行计划,有哪些方法可以识别此瓶颈? 我可以采取什么措施来减少表格插入的费用?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.