我正在尝试在postgres中构建和填充表格。最终产品看起来应该是
这些是表应该具有的列以及我认为应该使用的数据类型(如果您有更好的拟合数据类型的想法,我想知道它们)。
我用这个命令创建了表,
pets=# CREATE TABLE cats (
id integer,name text,gender text, age integer, intake_date timestamp,
adoption_date timestamp);
然后尝试在这个单一命令中添加我的所有行并获得
pets=# INSERT INTO cats (id,name,gender,age, intake_date,adoption_date)
VALUES
(00001, 'Mushi', 'M', 1,2016-01-09, 2016-03-22)
(00002, 'Seashell' , 'F', 7,2016-01-09)
(00003,'Azul', 'M', 3, 2016-01-11, 2016-04-17)
(00004, 'Victoire' ,'M', 7, 2016-01-11, 2016-09-01)
(00005, 'Nala', 'F', 12016-01-12);
ERROR: syntax error at or near "("
LINE 4: (00002, 'Seashell' , 'F', 7,2016-01-09)
然后我部分地意识到postgres会出现问题,因为有些adoption_date
列留空了。所以我试着至少添加一行
pets=# INSERT INTO cats (id,name,gender,age, intake_date,adoption_date)
VALUES
(00001,'Mushi','M', 1, 2016-01-09, 2016-03-22);
并找回错误
ERROR: column "intake_date" is of type timestamp without time zone but
expression is of type integer
LINE 3: (00001,'Mushi','M', 1, 2016-01-09, 2016-03-22);
^
HINT: You will need to rewrite or cast the expression.
所以我的三个问题或未知是
答案 0 :(得分:1)
时间戳数据应在单引号内传递
INSERT INTO cats (id,name,gender,age, intake_date,adoption_date)
VALUES(00001, 'Mushi', 'M', 1,'2016-01-09', '2016-03-22');
如果要插入空白值
,只需使用NULL
即可
INSERT INTO cats (id,name,gender,age, intake_date,adoption_date)
VALUES(00002, 'Seashell' , 'F', 7,'2016-01-09',null);
或
如下所示创建表格(将default Null
分配给您希望在插入时留空的列)
CREATE TABLE cats1 (
id integer
,name text
,gender text
,age integer
,intake_date timestamp
,adoption_date timestamp default Null
);