sql建表脚本转oracle,Oracle表结构转换SqlSERVER表结构 脚本

本文介绍了一个用于转换SQL语句的Python工具,该工具可以读取指定目录下的文件,并将特定的SQL语句转换为新的格式。重点介绍了如何处理CREATE TABLE语句及字段类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def getNewLine(self,oldLine):

if oldLine.strip().startswith('create table'):

tablename = oldLine.strip().split('.')[1].strip()

newline = 'create table ' + tablename + oldLine[-1]

else:

if oldLine.strip().startswith('('):

newline = oldLine

elif oldLine.startswith(')'):

newline = 'null' + oldLine[-1] + oldLine + oldLine[-1]

self._start = 'false'

else:

strList = oldLine.split(' ')

newline = ''

for string in strList:

if string == '':

newline += ' '

elif string.strip().upper().startswith('DEFAULT'):

continue

elif (string.upper() == 'NOT') or (string.upper() == 'NULL'):

continue

elif string.upper().startswith('VARCHAR2'):

newline += 'varchar(' + str(int(string[string.find('(')+1:string.find(')')])*3) + ') '

elif (string.upper() == 'NUMBER') or (string.upper() == 'DATE') or (string.upper() == 'DATETIME') or (string.upper() == 'TIMESTAMP(6)') or (string.upper() == 'INTEGER'):

newline += 'varchar(100) '

elif ((string.upper().startswith('NUMBER')) or (string.upper().startswith('DATE')) or (string.upper().startswith('DATETIME')) or (string.upper().startswith('TIMESTAMP(6)')) or (string.upper().startswith('INTEGER'))) and (string[-1] == '\n'):

newline += 'varchar(100) '

elif (string.upper().startswith('NUMBER,')) or (string.upper().startswith('DATE,')) or (string.upper().startswith('DATETIME,')) or (string.upper().startswith('TIMESTAMP(6),')) or ((string.upper().startswith('NUMBER(')) and (',' in string)) or ((string.upper().startswith('NUMBER(')) and (',' in string)) or (string.upper().startswith('INTEGER,')):

newline += 'varchar(100) null'

elif string.upper().startswith('NUMBER('):

newline += 'varchar(100)'

else:

i = 0

while (1 == 1):

if strList[i] == '':

i += 1

else:

filedName=strList[i]

break

if string == filedName:

newline = string + newline

if ',' in string:

newline += ' null'+string[string.rfind(','):]

return newline

def createNewFileFromOldFileList(self):

readFileDir  = self.readInitFile('readFiledir')

writeFileDir = self.readInitFile('writeFiledir')

sysType      = self.readInitFile('sysType')

if sysType == '1':

sepStr = '/'

else:

sepStr = '\\'

listfile=os.listdir(readFileDir)

for file in listfile:

start = 'false'

writeFile = open(writeFileDir+sepStr+file, 'w')

readData = open(readFileDir+sepStr+file,'r')

for line in readData:

if line.lower().startswith('create table'):

self._start = 'true'

if self._start=='true':

newLine = self.getNewLine(line)

writeFile.write(newLine)

readData.close()

writeFile.close()

app = Application()

app.createNewFileFromOldFileList()

[root@db01 ~]#

[root@yoon ~]#/usr/bin/pythonsql.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值