标签: sql-insert

在Oracle DB上执行PreparedStatement以插入Blob时出现NullPointerException

有没有人知道我在这里做错了什么?我试图将一个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)

java oracle blob prepared-statement sql-insert

6
推荐指数
1
解决办法
2197
查看次数

插入包含oracle中引号的字符串

如何在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.

我怎样才能做到这一点?

谢谢.

sql string oracle clob sql-insert

6
推荐指数
2
解决办法
2万
查看次数

如何将SELECT查询的每个结果的三个新行插入到同一个表中

我正在使用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)

sql sql-server sql-insert

6
推荐指数
1
解决办法
154
查看次数

插入大量记录而不锁定表

我试图在表格中插入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只是为了限制插入的记录再次插入表中

我做得对吗,这会避免表锁吗?还是有更好的方法.

注意:批次和没有批量插入时间或多或少相同

sql t-sql sql-server batch-insert sql-insert

6
推荐指数
2
解决办法
2万
查看次数

插入多行SQL Teradata

我正在创建一个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)

sql teradata sql-insert

6
推荐指数
2
解决办法
2万
查看次数

在插入/更新后,SQL(postgres)从多个表中返回数据

在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)

sql postgresql join sql-update sql-insert

6
推荐指数
1
解决办法
793
查看次数

Postgresql 多对多关系插入

我正在使用 Postresql 9.3.5。我在实体“Foo”和“Bar”之间存在多对多关系,我将其建模为如下所示:

CREATE TABLE Foo
(
    id SERIAL PRIMARY KEY NOT NULL,
    .... various columns for foo ....
);

CREATE TABLE Bar
(
    id SERIAL PRIMARY KEY NOT NULL,
    field1 varchar(50) UNIQUE NOT NULL,
    .... various columns for bar ....
);

CREATE TABLE FooBar
(
    fooID int NOT NULL,
    barID int NOT NULL,
    PRIMARY KEY (fooID, barID),
    FOREIGN KEY (fooID) REFERENCES Foo(id),
    FOREIGN KEY (barID) REFERENCES Bar(id)
);
Run Code Online (Sandbox Code Playgroud)

现在我要做的就是在 Foo 中插入一条记录,在 Bar 中插入一条相应的记录,然后插入包含 foo 和 bar 条目 id 的匹配 …

postgresql sql-insert

5
推荐指数
1
解决办法
3707
查看次数

PostgreSQL:如何将空值插入到uuid

需要向uuid类型没有NOT NULL规范(非主键)的字段插入空值。

当我尝试插入 '' 时,返回:

ERROR:  invalid input syntax for uuid: ""
Run Code Online (Sandbox Code Playgroud)

当我尝试插入 null 时,返回:

ERROR:  null value in column "uuid" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

怎么做?

psql 9.3.5

SQL:

INSERT INTO inv_location (address_id)
VALUES (null)
Run Code Online (Sandbox Code Playgroud)

postgresql null sql-insert

5
推荐指数
2
解决办法
3万
查看次数

Postgres:获取语句触发器中受影响的行数

我只是发现如果没有行受到影响,语句触发器也会执行。有趣 - 但无论如何 - 有没有办法让行不受影响,或者至少是否有行受到影响?

触发器在插入语句之后。

postgresql sql-insert

5
推荐指数
1
解决办法
1009
查看次数

错误:列“semester_id”是整数类型,但表达式是布尔类型

我在 PostgreSQL 中创建了这个 PL/pgSQL 触发器函数:

CREATE or replace FUNCTION public.trigger31()
        RETURNS trigger
        LANGUAGE 'plpgsql'
        COST 100
        VOLATILE NOT LEAKPROOF 
    AS $BODY$
    begin
        if(TG_OP='INSERT') then
            if(New.start_date>(select max(end_date) from "Semester") and New.end_date>New.start_date) then

                Insert Into "Semester" (semester_id,academic_year,academic_season,start_date,end_date,semester_status)
                values (New.semester_id=(select max(s.semester_id)+1 from "Semester" s):: integer,
                        new.academic_year= academic_year_trig(),
                        new.academic_season=academic_season_trig(),
                        new.start_date,new.end_date,
                        new.semester_status=semester_stat_trig()
                    );
                return NEW;
            else
                RAISE EXCEPTION 'Invalid start_date or end_date';
            end if;
        end if;
    end;
$BODY$;
Run Code Online (Sandbox Code Playgroud)

尝试执行它,我收到此错误:

ERROR:  column "semester_id" is of type integer but expression is of type boolean
LINE 2:    values …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql auto-increment database-trigger sql-insert

5
推荐指数
1
解决办法
6284
查看次数