Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pyodbc
- SQL_ALL_TABLE_QUERY="SELECT TABLE_NAME FROM {}.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';"
- SELECT_ALL_SQL_QUERY="SELECT * FROM [{0}] ORDER BY 1 OFFSET {1} ROWS FETCH NEXT {2} ROWS ONLY;"
- class MongoStorage:
- def __init__(self, db_name):
- self.client = MongoClient('localhost:27017',username='test',password='test123', authSource='admin',authMechanism='SCRAM-SHA-1')
- self.db = self.client[db_name]
- def custom_insert_bulk(self, data, table_name):
- collection = self.db[table_name]
- return collection.insert_many(data)
- mongo_handle = MongoStorage(db_name="test_db"))
- conn = pyodbc.connect(
- "DRIVER={ODBC Driver 17 for SQL Server};" +
- "SERVER={0};DATABASE={1};UID={2};PWD={3};PORT={4}".format(
- db.get("hostname"),
- db.get("db_name"),
- self.username,
- self.password,
- int(db.get("port"))
- )
- )
- row_limit = 1000
- for table in table_list:
- offset = 0
- page = 2
- next_page = True
- while next_page:
- if sql:
- query = settings.SELECT_ALL_SQL_QUERY.format(table, offset, row_limit)
- elif mysql:
- query = settings.SELECT_ALL_MYSQL_QUERY.format(table, offset, row_limit)
- else:
- continue
- cursor.execute(query)
- columns = [column[0].encode("utf-8") for column in cursor.description]
- result = []
- query_result = cursor.fetchall()
- if 0 < len(query_result) <= row_limit:
- if len(query_result) < row_limit:
- next_page = False
- for row in query_result:
- row_items = []
- for item in row:
- if isinstance(item, decimal.Decimal):
- row_items.append(Decimal128(item))
- elif isinstance(item, datetime.date):
- row_items.append( datetime.datetime.combine( item, datetime.time()))
- elif isinstance(item, str):
- item = item.strip()
- if "