我创建了一个表 MYTABLE
CREATE TABLE "MYTABLE" (
"surname" VARCHAR,
"name" VARCHAR,
"id" INTEGER PRIMARY KEY NOT NULL ,
"flag" BOOL);
Run Code Online (Sandbox Code Playgroud)
当我插入一条记录时:
INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", true);
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,即no such column: true. 如果我使用这个:
INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", "true");
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但是当我阅读该记录时,rs.getBoolean("flag")我得到了错误。
最后,我试过这个
INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", 1);
Run Code Online (Sandbox Code Playgroud)
的rs.getBoolean("flag")回报true。所以这里的教训是 Sqlite 中的布尔值插入 0/1 ?
Postgres 文档使它看起来像 WHERE 子句可以作为 ON CONFLICT 条件:https : //www.postgresql.org/docs/9.5/static/sql-insert.html
我一直无法让它工作(如果可能的话)。这是我尝试过的众多排列之一:
INSERT INTO friends (id, dob, frn, status, "groupId",
"createdAt", "updatedAt")
VALUES ('1da04305-68ef-4dc1-be6c-
826ab83a6479', '1937-06-01T08:29:08-07:00', 100001, 'New', 'bc1567bc-
14ff-4ba2-b108-4cb2e0f0f768', NOW(), NOW())
ON CONFLICT
WHERE frn=100001 DO NOTHING
Run Code Online (Sandbox Code Playgroud)
frn 没有任何约束,所以语法更简单:
ON CONFLICT (frn) DO NOTHING
Run Code Online (Sandbox Code Playgroud)
引发数据库错误。我希望这是一个简单的语法问题。
我有一个这样的SQL:
INSERT INTO table1 (column1, column2) (
SELECT column3, column4 FROM table2 WHERE column5 = 'value'
);
Run Code Online (Sandbox Code Playgroud)
table13,500,000 行。table2900,000 行。SELECT column3, column4 FROM table2 WHERE column5 = 'value'返回 NO 寄存器(零)并且需要大约 0.004 秒。INSERT INTO table1 (column1, column2) VALUES ('value', 'value')也需要约 0.004 秒。但是,当我将两者结合在一个INSERT INTO SELECT语句中时(如上所示),大约需要 7.7 秒。有解释吗?有解决办法吗?
我想从旧的数据库表中获取值到新的数据库表.
旧数据库结构:
表I: Country
新的数据库结构
表二: Countries
我使用了以下插入查询,如,
select 'insert into Countries (Id, Name) select ', countryid, countryname from Country
Run Code Online (Sandbox Code Playgroud)
但我有结果,如,
insert into Countries(Id,Name) select 1 Indiainsert into Countries(Id,Name) select 2 Any Country像那样.
但我需要结果,如,
insert into Countries (Id, Name) values (1, 'India')
Run Code Online (Sandbox Code Playgroud)
为实现这一目标,查询是什么?帮我...
我需要构建一个从SQL Server读取数据并将其插入MySql的过程.更多我还需要另一个过程从MySql Server读取数据并将其插入SQL Server.
我从未做过这样的事情.我想不出办法完成它.谁能告诉我怎么能这样做呢?
我至少欣赏一个可以搜索它的想法.
我一直在谷歌搜索,但没有找到太多的帮助.
我有Scribe软件我不确定Scribe中是否有未来可以帮助我这个?
请注意,此过程将自动运行,以便传输数据或从源接收数据.
我正在编写关于将数据从文件导入SQL Server表的方法的研究生工作.我已经创建了自己的程序,现在我将它与一些标准方法进行比较,如bcp,BULK INSERT,INSERT ... SELECT*FROM OPENROWSET(BULK ...).我的程序从文件中读取行,解析它们并使用普通的INSERT逐个导入它们.我生成的文件有100万行,每行有4列用于测试.现在我的情况是我的程序工作160秒,而标准方法工作5-10秒.
那么问题是为什么BULK操作比100万INSERT更快?他们是否使用特殊手段?你可以解释一下,还是给我一些有用的链接?谢谢!
我需要在下面的Temporal Table中为我的本地开发目的播种数据,开始日期应该是旧的.给定的表架构是
CREATE TABLE [dbo].[Contact](
[ContactID] [uniqueidentifier] NOT NULL,
[ContactNumber] [nvarchar](50) NOT NULL,
[SequenceID] [int] IDENTITY(1,1) NOT NULL,
[SysStartTime] [datetime2](0) GENERATED ALWAYS AS ROW START NOT NULL,
[SysEndTime] [datetime2](0) GENERATED ALWAYS AS ROW END NOT NULL,
CONSTRAINT [PK_Contact] PRIMARY KEY NONCLUSTERED
(
[ContactID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
) ON [PRIMARY]
WITH
(
SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[ContactHistory] , DATA_CONSISTENCY_CHECK …Run Code Online (Sandbox Code Playgroud) 运行 Postgres 9.6.6。我创建了一个表如下:
create table person (
id serial primary key,
name text,
role integer references role (id),
phonenumber text);
Run Code Online (Sandbox Code Playgroud)
当我尝试按如下方式插入数据时:
insert into person values ('This Person',2,'+15105551111');
Run Code Online (Sandbox Code Playgroud)
我收到这条消息:
ERROR: invalid input syntax for integer: 'This Person'
Run Code Online (Sandbox Code Playgroud)
这表明 Postgres 期望id. 但是如果id是串行主键,它不应该是自动填充和自动递增的吗?
我使用 PostgreSQL 10.11 并且希望将以下结构输入 jsonb 字段:
{
lead: {
name: string,
prep: boolean
},
secondary: {
{
name: string,
prep: boolean
},
{
name: string,
prep: boolean
}
}
Run Code Online (Sandbox Code Playgroud)
因此,lead 是一个带有 name 和 prep 的对象, secondary 是一个包含 name 和 prep 的数组。我怎样才能做到这一点?下面的脚本是创建一个带有 jsonb 字段的表:
CREATE TABLE public.test01 (
name JSONB DEFAULT '{}'::jsonb NOT NULL
)
WITH (oids = false);
ALTER TABLE public.test01
ALTER COLUMN id SET STATISTICS 0;
COMMENT ON COLUMN public.test01.name
IS '''[]''';
ALTER TABLE public.test01
OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)
我正在尝试此插入但出现错误: …
我有一组通过管道组合在一起的 Linux 应用程序
some_application | awk '{print "INSERT INTO my_table VALUES (\x27" $2 "\x27," $3 ")"'
Run Code Online (Sandbox Code Playgroud)
其输出将是一系列 SQLINSERT命令:
INSERT INTO my_table VALUES ('foo',42)
INSERT INTO my_table VALUES ('bar',43)
Run Code Online (Sandbox Code Playgroud)
如何将这些多个命令通过管道传输到psql?
有一个类似的问题回答了如何使用-cpsql 参数执行单个命令。但这个答案对于我的场景来说并不理想,因为它需要为每个命令建立一个新的连接;我更愿意设置一个连接,然后通过该会话传输所有命令。
预先感谢您的考虑和回复。
sql-insert ×10
sql ×8
postgresql ×4
sql-server ×4
bulkinsert ×1
database ×1
json ×1
jsonb ×1
mariadb ×1
mysql ×1
performance ×1
pipe ×1
psql ×1
sqlite ×1
temporal ×1
upsert ×1