我有一个名为mycolumn
的bigint列。我使用PSQL命令执行SQL脚本。
使用COPY
命令:
COPY public.mytable (myothercol, mycolumn) FROM stdin;
1 \N
\.
这有效。但是以下方法不起作用:
EXECUTE 'insert into public.mytable (myothercol, mycolumn) values ($1,$2);' USING
1,NULL;
这给了我错误:
列“ mycolumn”的类型为bigint,但表达式的类型为text
为什么insert
不能用于空值,而COPY
却不能工作?
答案 0 :(得分:1)
您最好告诉PostgreSQL将参数显式转换为bigint
:
EXECUTE 'insert into public.mytable (myothercol, mycolumn) values ($1,$2::bigint);'
USING 1,NULL;
问题是PostgreSQL无法自动知道NULL是什么数据类型,因此它猜测text
。 COPY
不必猜测数据类型。