Oracle表結構轉換SqlSERVER表結構 指令碼
vi parameter.ini
#sysType---1:Linux;others:windows
sysType=1
#readFiledir is OldFile
readFiledir=/root/tmpmycnf/dbquery/yoon/oldfile
#writeFiledir is New File
writeFiledir=/root/tmpmycnf/dbquery/yoon/newfile
vi sql.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#Author:Yoon
#Version:1.0
#Date:2014-07-07
import os
import sys
class Application(object):
def __init__(self):
self._oldFileDir = ''
self._newFileDir = ''
self._inifilename = './parameter.ini'
self._start = 'false'
def readInitFile(self,keyName):
data = open(self._inifilename,'r')
for line in data:
if keyName == line.split('=')[0].strip():
return line.split('=')[1].strip()
break
data.close()
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/python sql.py
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1326982/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將表結構轉換成實體欄位
- 實現MySQL表結構自動分割槽指令碼MySql指令碼
- (2) SqlServer表與索引的結構的補充SQLServer索引
- Agile PLM資料庫表結構(Oracle)資料庫Oracle
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- Oracle 操作表結構基本語法及示例Oracle
- clickhouse如何表結構
- oracle體系結構(轉)Oracle
- 轉載] magento 產品資料表結構
- 表結構對比版本
- flowable 表結構說明
- 指令集體系結構_計算機體系結構:指令程式碼計算機
- 資料結構 - 線性表 - 順序表資料結構
- 資料結構——線性表資料結構
- 資料結構——雜湊表資料結構
- 資料結構 | 線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- clickhouse表結構匯出為
- PLSQL只匯出表結構SQL
- 如何設計SKU表結構
- [資料結構] - 線性表資料結構
- oracle中判斷欄位是否存在和新增表結構Oracle
- Oracle、MySQL常見表結構變更語句對比OracleMySql
- 資料結構-線性表、連結串列資料結構
- C++資料結構和pb資料結構的轉換C++資料結構
- 考研資料結構-線性表-順序表資料結構
- 資料庫-單表結構-建表語句資料庫
- MySQL修改表結構到底會不會鎖表?MySql
- Oracle之結構Oracle
- 線性表的結構詳解
- innodb表空間儲存結構
- 【MSSQL】SSMS快速獲取表結構SQLSSM
- Mysqldump 匯出表結構異常MySql
- 資料結構(一)--- 跳躍表資料結構
- 資料結構進階:ST表資料結構
- 資料結構之「雜湊表」資料結構
- 資料結構 - 雜湊表,初探資料結構
- Redis資料結構—跳躍表Redis資料結構