postgresql jdbc, pgobject可用类型,数组类型
postgresql jdbc, pgobject available types, array type
我使用带有 jdbc 驱动程序 9.4.1208.jre7 和 scalikejdbc 包装器
的 postgresql 9.5
我的table是:
CREATE TABLE refs
(
name character varying NOT NULL,
custom json,
prices integer[]
)
我可以使用 org.postgresql.util.PGobject:
插入 json 值
val res = new PGobject()
res.setType("json")
res.setValue("{'name': 'test'}")
res
我也想插入数组。我怎样才能做到这一点?我认为这会起作用:
def toArrStr(a: Iterable[String]): PGobject = {
val res = new PGobject()
res.setType("ARRAY")
res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
res
}
但它给了我例外:org.postgresql.util.PSQLException: Unknown type ARRAY
可能是我遗漏了一些东西,但我找不到关于 PGObject 的好文档 class。我认为 PGObject class 正是为像我这样的目的而设计的,但它的行为并不像预期的那样
POSTGRES有很多类型,不仅有array,还有date, datetime, daterange, timestamprange等等。我认为应该有其对应类型的类型名称。
我了解如何使用 PGObject 保存字符列表[]:
def toArrStr(a: Iterable[String]): PGobject = {
val res = new PGobject()
res.setType("varchar[]")
res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
res
}
要保存数字数组:
其中大小为 2、4、8(smallint、int、bigint)
def toArrNum(a: Iterable[AnyVal], size: Int): PGobject = {
val res = new PGobject()
res.setType(s"int$size[]")
res.setValue(s"{${a.mkString(",")}}")
res
}
我使用带有 jdbc 驱动程序 9.4.1208.jre7 和 scalikejdbc 包装器
的 postgresql 9.5我的table是:
CREATE TABLE refs
(
name character varying NOT NULL,
custom json,
prices integer[]
)
我可以使用 org.postgresql.util.PGobject:
插入 json 值val res = new PGobject()
res.setType("json")
res.setValue("{'name': 'test'}")
res
我也想插入数组。我怎样才能做到这一点?我认为这会起作用:
def toArrStr(a: Iterable[String]): PGobject = {
val res = new PGobject()
res.setType("ARRAY")
res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
res
}
但它给了我例外:org.postgresql.util.PSQLException: Unknown type ARRAY
可能是我遗漏了一些东西,但我找不到关于 PGObject 的好文档 class。我认为 PGObject class 正是为像我这样的目的而设计的,但它的行为并不像预期的那样
POSTGRES有很多类型,不仅有array,还有date, datetime, daterange, timestamprange等等。我认为应该有其对应类型的类型名称。
我了解如何使用 PGObject 保存字符列表[]:
def toArrStr(a: Iterable[String]): PGobject = {
val res = new PGobject()
res.setType("varchar[]")
res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
res
}
要保存数字数组: 其中大小为 2、4、8(smallint、int、bigint)
def toArrNum(a: Iterable[AnyVal], size: Int): PGobject = {
val res = new PGobject()
res.setType(s"int$size[]")
res.setValue(s"{${a.mkString(",")}}")
res
}