如下:
CREATE TABLE
dim_ddl_convert
source VARCHAR(100) NOT NULL,
data_type1 VARCHAR(100) NOT NULL,
target VARCHAR(100) NOT NULL,
准备一张维度
表
:dim_ddl_convert,
建表语句
如下:
DROP TABLE IF EXISTS `dim_ddl_convert`;
CREATE TABLE `dim_ddl_convert` (
`source` varchar(100) NOT NULL,
`data_type1` varchar(100) NOT NULL,
`target` varchar(100) NOT NULL,
`data_type2` varchar(100) DEFAULT NULL,
前序:format是
python
2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。
不需要理会数据类型的问题,在%方法中%s只能替代字符串类型
单个参数可以多次输出,参数顺序可以不相同
填充方式十分灵活,对齐方式十分强大
官方推荐用的方式,%方式将会在后面的版本被淘汰
你可以使用以下步骤将
MySQL
表
转
换为
Hive
表
并生成
建表语句
:
1. 在
MySQL
中运行SHOW CREATE TABLE语句,以
获取
MySQL
表
的
建表语句
。
2. 将
建表语句
中的引擎和字符集替换为
Hive
支持的引擎和字符集。
3. 将
建表语句
中的数据类型替换为
Hive
支持的数据类型。
4. 将
建表语句
中的AUTO_INCREMENT删除,因为
Hive
不支持自增长。
5. 将
建表语句
中的主键和索引删除,因为
Hive
不支持主键和索引。
6. 将
建表语句
中的分隔符替换为
Hive
支持的分隔符。
7. 生成
Hive
建表语句
并保存到文件中。
下面是一个示例
Python
脚本,可以将
MySQL
表
转
换为
Hive
表
并生成
建表语句
:
```
python
import re
def convert_
mysql
_to_
hive
(
mysql
_create_table):
# Replace engine and character set
hive
_create_table =
mysql
_create_table.replace('ENGINE=InnoDB', '')
hive
_create_table =
hive
_create_table.replace('DEFAULT CHARSET=utf8', 'ROW FORMAT DELIMITED FIELDS TERMINATED BY \',\'')
# Replace data types
hive
_create_table = re.sub(r'int\(\d+\)', 'int',
hive
_create_table)
hive
_create_table = re.sub(r'varchar\(\d+\)', 'string',
hive
_create_table)
hive
_create_table = re.sub(r'text', 'string',
hive
_create_table)
hive
_create_table = re.sub(r'datetime', 'timestamp',
hive
_create_table)
# Remove auto increment
hive
_create_table = re.sub(r'AUTO_INCREMENT=\d+ ', '',
hive
_create_table)
# Remove primary key and indexes
hive
_create_table = re.sub(r',\n\s+PRIMARY KEY \(.+?\)', '',
hive
_create_table)
hive
_create_table = re.sub(r',\n\s+KEY .+? \(.+?\)', '',
hive
_create_table)
# Replace delimiter
hive
_create_table =
hive
_create_table.replace(';', '\n')
return
hive
_create_table
# Example usage
mysql
_create_table = "SHOW CREATE TABLE mytable"
hive
_create_table = convert_
mysql
_to_
hive
(
mysql
_create_table)
with open('
hive
_create_table.sql', 'w') as f:
f.write(
hive
_create_table)
你需要将`
mysql
_create_table`替换为你的
MySQL
建表语句
,并将生成的
Hive
建表语句
保存到`
hive
_create_table.sql`文件中。
cx_Oracle 报错:cx_Oracle.DatabaseError: DPI-1050: Oracle Client library must be at version 11.2
18070