首先使用navicat工具将oracle中的数据表导入到postgreSQL中
根据postgreSQL大小写问题
标准的SQL是不区分大小写的。
但是PostgreSQL对于数据库中对象的名字允许使用支持大小写区分的定义和引用方法;方式就是在DDL中用双引号把希望支持大小的对象名括起来。
比如希望创建一个叫AAA的表。如果用CREATE TABLE AAA (...);的话,创建出来的表实际上是aaa。
如果希望创建大写的AAA表的话,就需要用CREATE TABLE "AAA" (...);这种双引号的方式定义对象名。
这样写的缺点是查询语句必须也使用双引号的方式引用对象名。
比如SELECT * FROM "AAA";否则PostgreSQL缺省会去找aaa这个对象,然后返回aaa不存在的错误。
需要注意的是不仅仅是表可以这样定义和引用,对PostgreSQL中的任意对象(比如列名,索引名等)都有效
创建exec(sqlstring)函数方便执行
CREATE OR REPLACE FUNCTION "public"."exec"("sqlstring" varchar)
RETURNS "pg_catalog"."varchar" AS $BODY$
declare
res varchar(50);
BEGIN
EXECUTE sqlstring;
RETURN 'ok';
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ERROR:language "plpgsql" does not exist
HINT:Use CREATE LANGUAGE to load the language into the database.
未安装数据库语言
CREATE LANGUAGE plpgsql
通过条件拼接SQL,修改某表 column为小写
select * from information_schema.columns where table_schema = 'public' and table_name = 'qrtz_calendars'
SELECT
exec('alter table "' || table_name || '" rename column "' || column_name || '" to ' || lower( column_name ) || ';')
FROM
information_schema.COLUMNS
WHERE
table_schema = 'public'
AND column_name <> lower(column_name)
AND table_name = 'qrtz_triggers';
修改表名为小写
SELECT * FROM information_schema.TABLES WHERE table_schema = 'public' AND table_catalog = 'Guns' AND table_name <> lower( table_name );
SELECT
exec ( 'alter table "' || table_name || '" rename to ' || lower( table_name ) || ';' )
FROM
information_schema.tables
WHERE
table_schema='public'
and table_catalog = 'Guns'
and table_name <> lower(table_name);
数据表迁移后,修改代码配置文件中的数据源,将代码中涉及到的sql按照PostgreSQL的规则修改