Postgres - 通过SQL插入varchar数组

Mic*_*syk 2 database arrays postgresql insert pg

我想执行此查询.

INSERT INTO items (title, description,
start_date,
expiration_date,
type,
quantity,
state,
sold,
cover_photo_file_name,
cover_photo_content_type,
cover_photo_file_size,
instructions)
VALUES
(
    'some_test_value',
    'lorem ipsum',
    '2015-01-01 00:00:00',
    '2015-06-10 00:00:00',
    0,
    19,
    0,
    0,
    'RackMultipart20150317-10093-1ny4gmx.gif',
    'image/gif',
    157574,
    {"lorem ipsum\r","dolor sit\r","loremloremipsumipsum 'sitsit' dolor sit"}
    );
Run Code Online (Sandbox Code Playgroud)

我觉得非常讨厌

ERROR: syntax error at or near "{"
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做的时候

ARRAY["Lorem ipsum\r", ...]
Run Code Online (Sandbox Code Playgroud)

我明白了:

ERROR: column "Lorem ipsum" does not exist
Run Code Online (Sandbox Code Playgroud)

问题是我现在无法更改数据库(我没有时间)所以我需要构建一个将"执行"该工作的查询(尽管此数据库需要使用DROP DATABSE进行规范化...)

我的代码出了什么问题?也许我错过了一些明显的东西,但我疲惫的心灵只是在跳过它.

小智 6

字符串文字需要用单引号括起来,'而不是双引号。

仅在“简写”数组表示法中使用的{...}值需要用双引号引起来:

'{"lorem ipsum", "dolor sit"}'::text[]
Run Code Online (Sandbox Code Playgroud)

在这里使用ARRAY构造函数更容易:

ARRAY['Lorem ipsum\r', ...]
Run Code Online (Sandbox Code Playgroud)

因为单引号不需要转义。


Pan*_*j K 6

INSERT INTO items (title, description,
start_date,
expiration_date,
type,
quantity,
state,
sold,
cover_photo_file_name,
cover_photo_content_type,
cover_photo_file_size,
instructions)
VALUES
  ('some_test_value',
  'lorem ipsum',
'2015-01-01 00:00:00',
'2015-06-10 00:00:00',
0,
19,
0,
0,
'RackMultipart20150317-10093-1ny4gmx.gif',
'image/gif',
157574,
'{"lorem ipsum\r","dolor sit\r","loremloremipsumipsum 'sitsit' dolor sit"}'
);
Run Code Online (Sandbox Code Playgroud)

请试试这个......