有没有人知道我在这里做错了什么?我试图将一个blob(包含一个重要的pdf)插入一个oracle db以及一些其他信息.我正在使用PreparedStatement
码:
public void saveReportErgebnis(int reportId, Date erzeugung, int archiv,
Blob pdf, String kommentar) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] tmp = new byte[(int) pdf.length()];
if(kommentar == null){
kommentar = "";
}
SimpleDateFormat erstellungSdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
try {
pdf.getBinaryStream().read(tmp);
oracle.sql.BLOB oracleBlob = new oracle.sql.BLOB((OracleConnection) getConnection(), tmp);
PreparedStatement prepStmt = getRTTDBHandler()
.createPreparedStatement(
"INSERT INTO reportergebnis(report_id, erzeugung, archiv, pdf, kommentar) VALUES (?,?,?,?,?)");
System.out.println("debug 2 oracle");
prepStmt.setInt(1, reportId);
prepStmt.setString(2, formatDateString(erstellungSdf.format(erzeugung)));
prepStmt.setInt(3, archiv);
prepStmt.setBlob(4, oracleBlob);
prepStmt.setString(5, kommentar); …Run Code Online (Sandbox Code Playgroud) 我试图使用mysql workbench创建一个带参数的存储过程,以将数据插入表中.
我究竟做错了什么??
USE deb42181_ramos;
CREATE PROCEDURE sp_insertuser(IN gebruikersnaamparam varchar(10)
, IN wachtwoordparam VARCHAR(50)
, IN voornaamparam VARCHAR(15)
, IN achternaamparam VARCHAR(15)
, IN tussenvoegselparam VARCHAR(10)
, IN gebruikerlevelparam INT)
BEGIN
INSERT INTO gebruikers (
gebruikersnaam
, wachtwoord
, voornaam
, achternaam
, tussenvoegsel
, gebruikerlevel)
VALUES (gebruikersnaamparam
, wachtwoordparam
, voornaamparam
, achternaamparam
, tussenvoegselparam
, gebruikerlevelparam);
END
Run Code Online (Sandbox Code Playgroud)
错误是在值的最后一行之后)他并不期望a;
关于Jeroen
如何在oracle中插入包含引号的字符串?我的代码是
INSERT INTO TIZ_VADF_TL_MODELS (name)
VALUES ('xxx'test'yy');
Run Code Online (Sandbox Code Playgroud)
如果我使用
INSERT INTO TIZ_VADF_TL_MODELS (name)
VALUES ("xxx'test'yy");
Run Code Online (Sandbox Code Playgroud)
我得到标识符太长错误,因为xxx'test'yy是clob.
我怎样才能做到这一点?
谢谢.
我试图允许带有返回子句的insert语句进入Postgres v9.4中的视图,但我正在努力学习语法.这就是我想要调用insert语句的方法:
CREATE VIEW MyView AS SELECT a.*, b.someCol1
FROM tableA a JOIN tableB b USING(aPrimaryKey);
INSERT INTO MyView (time, someCol) VALUES (someTime, someValue) RETURNING *;
INSERT INTO MyView (someCol) VALUES (someValue) RETURNING *;
Run Code Online (Sandbox Code Playgroud)
请注意,时间的默认值为NOW().这是我到目前为止:
CREATE RULE MyRuleName AS ON INSERT TO MyView DO INSTEAD (
INSERT INTO tableA (time) VALUES COALESCE(NEW.time, NOW());
INSERT INTO tableB (aPrimaryKey, someCol)
VALUES (CURRVAL('tableA_aPrimaryKey_seq'), NEW.someValue);
);
Run Code Online (Sandbox Code Playgroud)
上面的工作是插入值,但我正在努力尝试找出如何添加返回的语句.我试过以下没有成功:
CREATE RULE MyRuleName AS ON INSERT TO MyView DO INSTEAD (
INSERT INTO tableA (time) VALUES COALESCE(NEW.time, …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server.对于每一个:
select * from ServiceItems where Itemtypeid=7004 (query1)
Run Code Online (Sandbox Code Playgroud)
我想在同一个表中插入三个新行,如:
(ItemID, PackageID, ItemTypeID, ServiceID, ItemName, CreatedDate) VALUES
(19377, 5352, 7007, 2011, N'L1', '11/11/2015 6:50:51 PM'),
(19378, 5352, 7008, 2011, N'M1', '11/11/2015 6:50:51 PM'),
(19376, 5352, 7006, 2011, N'W1', '11/11/2015 6:50:51 PM')
ItemID = is the primary key
PackageID = one from query1
ItemTypeID = as it is 7006,7007,700
ServiceID = one from query1
ItemName = as it is L1,M1,W1
CreatedDate = time now
Run Code Online (Sandbox Code Playgroud)
我试过了 INSERT INTO SELECT...
INSERT INTO ServiceItems …Run Code Online (Sandbox Code Playgroud) 我试图在表格中插入1,500,000条记录.我在插入过程中面临表锁定问题.所以我想出了下面的批量插入.
DECLARE @BatchSize INT = 50000
WHILE 1 = 1
BEGIN
INSERT INTO [dbo].[Destination]
(proj_details_sid,
period_sid,
sales,
units)
SELECT TOP(@BatchSize) s.proj_details_sid,
s.period_sid,
s.sales,
s.units
FROM [dbo].[SOURCE] s
WHERE NOT EXISTS (SELECT 1
FROM dbo.Destination d
WHERE d.proj_details_sid = s.proj_details_sid
AND d.period_sid = s.period_sid)
IF @@ROWCOUNT < @BatchSize
BREAK
END
Run Code Online (Sandbox Code Playgroud)
我在Destination表上有一个聚簇索引(proj_details_sid ,period_sid ).NOT EXISTSpart只是为了限制插入的记录再次插入表中
我做得对吗,这会避免表锁吗?还是有更好的方法.
注意:批次和没有批量插入时间或多或少相同
我正在创建一个volatile表并尝试向表中插入行.我可以上传一行如下...
create volatile table Example
(
ProductID VARCHAR(15),
Price DECIMAL (15,2)
)
on commit preserve rows;
et;
INSERT INTO Example
Values
('Steve',4);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试上传多个时,我收到错误:
"语法错误:预期在')'和','之间."
INSERT INTO Example
Values
('Steve',4),
('James',8);
Run Code Online (Sandbox Code Playgroud) 在postgres中是否可能在1)INSERT INTO和2)UPDATE之后从多个表返回数据?
例如,假设以下人为的示例:
review fit
------ ----
id id
fit_id label
body
Run Code Online (Sandbox Code Playgroud)
1)如何插入检查表并在RETURNING子句中返回与检查数据结合的各个拟合数据?
因此,要插入的SQL没有完成所需的结果:
INSERT INTO review (id, fit_id, body) VALUES (5, 1, 'some copy') RETURNING *;
Run Code Online (Sandbox Code Playgroud)
但是,所需的结果是:
id | 5
fit_id | 1
body | some copy
id | 1
label | some label
Run Code Online (Sandbox Code Playgroud)
2)如何更新评论fit_id并在RETURNING子句中返回与评论数据结合的新拟合数据?
SQL将fit_id更新2为审阅5而未完成所需结果:
UPDATE review SET fit_id = 2 WHERE review_id = 5 RETURNING *;
Run Code Online (Sandbox Code Playgroud)
但是,所需的结果是:
id | 5
fit_id | 2
body | some copy
id | 2
label | some …Run Code Online (Sandbox Code Playgroud) WITH upt as (
UPDATE backend."orders" SET "statusId" = 5
WHERE "userId" IN (177962,88265) and "statusId" IN (0,1,2,3,4) RETURNING *
)
INSERT INTO __test_result(orderid) VALUES ((SELECT orderid FROM upt))
Run Code Online (Sandbox Code Playgroud)
需要更新和记录数据,得到这个错误
ERROR: column "orderid" does not exist Hint: There is a column named
"orderid" in table "__test_result", but it cannot be referenced from this part of the query.
Run Code Online (Sandbox Code Playgroud)
如何在表中插入所有“upt”行?它必须看起来
"upt.orderid","jsonb for that orderid"
Run Code Online (Sandbox Code Playgroud)
对于每个订单 jsonb 必须从具有相同 orderid 的“upt”列创建
我正在尝试使用 Entity Framework Core 快速执行大量包含大量数据的单独插入。我将数据插入到几个相关的表中,偶尔会收到SqlException以下消息;
事务(进程 ID 120)在与另一个进程的锁资源上发生死锁,并已被选为死锁牺牲品。重新运行事务。
我正在做的唯一读取是作为插入的一部分来检索新创建记录的 ID。您可以从发生的插入中看到 Entity Framework Core 日志。如果它有所作为,我向 UniqueId 列添加了一个非聚集索引。
如何避免死锁并因此获得更好的性能?
2018-06-13 17:11:59 DBG Executing DbCommand [Parameters=["@p0='40515' (Nullable = true), @p1='22a98afd-57c9-4821-8027-db9a7d1098d0' (Nullable = true), @p2='2017-12-13T17:11:41.8202539+01:00' (Nullable = true), @p3='2018-06-13T16:11:57.3627370+00:00', @p4='11' (Nullable = true), @p5='0' (Nullable = true), @p6='Teacher Tech' (Nullable = false) (Size = 1000), @p7='3' (Nullable = true), @p8='True' (Nullable = true), @p9='7f72ce12-7c3a-449e-b456-97db816dd7e6' (Nullable = true), @p10='11.0.40515.3' (Size = 50), @p11='False' (Nullable = true), @p12='False' (Nullable = true), @p13='bridge 2015-12-09_15-29 97f149c' …Run Code Online (Sandbox Code Playgroud) sql-server deadlock transactions sql-insert entity-framework-core
sql-insert ×10
sql ×6
postgresql ×3
sql-server ×3
oracle ×2
batch-insert ×1
blob ×1
clob ×1
deadlock ×1
java ×1
join ×1
mysql ×1
parameters ×1
sql-update ×1
string ×1
t-sql ×1
teradata ×1
transactions ×1