在将Postgresql
数据转换为Neo4j
的过程中,char
类型的字段的在转换成Neo4j
的属性后会带有空格。比如char(10)
字段的数据为hello
在Neo4j
属性中则会带有空格,虽然可以在查询的时候加上trim函数,但这样对于原来的查询代码改动太大。所以决定从源头将这个问题解决。 假如有一个字段为char(10)
如果插入的数据长度未达到10,关系型数据库默认在后面添加空格,所以将char
类型改为varchar
可以解决这个问题。 在char
类型改为varchar
的过程中,会默认把char
类型中的空格给去掉。 在postgresql
中有一个表information_schema.columns
记录了所有字段的信息,所以可以从这个表中提取信息进行char
到varchar
的转换。
# 这个语句会生成将char改为varchar的sql语句
SELECT CONCAT('alter table ', table_schema, '.', table_name, ' alter column ', column_name, ' type ', 'varchar ', '(',character_maxinum_length,');') from information_schema.columns where table_catalog='ptl' and date_type='character';
information_schema.columns
中的常用字段。
字段 | 描述 |
---|---|
table_catalog | 数据库名 |
table_schema | 数据库的schema |
table_name | 表名 |
column_name | 字段名 |
data_type | 数据类型 |
character_maximum_length | 如果类型为character或bit string type,则为可存储最大字符数 |