暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

gauss100迁移到gauss200

RiverStar 2025-04-23
211

gauss100迁移到gauss200

#!/bin/bash # 输入文件 input_file="oracle_ddl.sql" # 输出文件 output_file="gauss_dws_ddl.sql" # 清空输出文件 > "$output_file" # 读取文件内容 while IFS= read -r line; do # 替换 Oracle 数据类型为 GaussDB(DWS) 数据类型 line=$(echo "$line" | sed -E ' # 替换 VARCHAR s/VARCHAR\(([0-9]+) BYTE\)/VARCHAR(\1)/g; s/VARCHAR2\(([0-9]+) BYTE\)/VARCHAR(\1)/g; s/VARCHAR2\(([0-9]+)\)/VARCHAR(\1)/g; # 替换 CHAR 类型 s/CHAR\(([0-9]+) BYTE\)/CHAR(\1)/g; s/NCHAR\(([0-9]+)\)/CHAR(\1)/g; # 替换 LOB 类型 s/CLOB/TEXT/g; s/BLOB/BYTEA/g; s/NCLOB/TEXT/g; # 替换 NUMBER s/NUMBER\(([0-9]+)(,[0-9]+)?\)/NUMERIC(\1\2)/g; s/NUMBER/NUMERIC/g; # 替换 BINARY 类型 s/BINARY_INTEGER/INTEGER/g; s/BINARY_FLOAT/REAL/g; s/BINARY_DOUBLE/DOUBLE PRECISION/g; s/BINARY_BIGINT/BIGINT/g; # 替换 DATE 和 TIMESTAMP 类型 s/DATE/TIMESTAMP/g; s/TIMESTAMP\(([0-9]+)\)/TIMESTAMP/g; s/TIMESTAMP\(([0-9]+)\)WITH TIME ZONE/TIMESTAMP WITH TIME ZONE/g; s/TIMESTAMP WITH LOCAL TIME ZONE/TIMESTAMP/g; # 替换 DEFAULT 值 s/DEFAULT SYSDATE/DEFAULT CURRENT_TIMESTAMP/g; s/DEFAULT SYSTIMESTAMP/DEFAULT CURRENT_TIMESTAMP/g; s/DEFAULT now\(\)/DEFAULT CURRENT_TIMESTAMP/g; # 替换 CHECK 约束 s/CHECK \(([^)]+)\)/CHECK (\1)/g; # 替换其他常见类型 s/RAW\(([0-9]+)\)/BYTEA/g; s/LONG RAW/BYTEA/g; s/LONG/TEXT/g; s/FLOAT\(([0-9]+)\)/DOUBLE PRECISION/g; ') # 写入输出文件 echo "$line" >> "$output_file" done < "$input_file" echo "列属性已转换为 GaussDB(DWS) 格式并保存到 $output_file 文件中。"
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论