在python中转换文件
我正在使用AmazonRedshift分析现有的压缩。不幸的是,它不能持久化数据库中的数据。我必须把细节保存在一个文件里。我已经从数据库/系统视图中获得了有关列名称和数据类型的信息 我需要合并这些信息,以便使用它们创建具有压缩的新表 我使用python脚本从元数据创建表。我需要这些额外的信息来添加到createtable语法中 我的输出文本文件格式如下在python中转换文件,python,sql,regex,file,Python,Sql,Regex,File,我正在使用AmazonRedshift分析现有的压缩。不幸的是,它不能持久化数据库中的数据。我必须把细节保存在一个文件里。我已经从数据库/系统视图中获得了有关列名称和数据类型的信息 我需要合并这些信息,以便使用它们创建具有压缩的新表 我使用python脚本从元数据创建表。我需要这些额外的信息来添加到createtable语法中 我的输出文本文件格式如下 schema_name.table_name table_name column_name compression_type 例如
schema_name.table_name
table_name column_name compression_type
例如
abc_schema.tab1
tab1 col1 raw
tab1 col2 lzo
tab1 col3 bytedict
tab1 col4 delta32k
tab1 col5 raw
abc_schema.tab2
tab2 col1 raw
tab2 col2 lzo
tab2 col3 bytedict
tab2 col4 delta32k
tab2 col5 raw
我想将它们插入数据库表中
插入选项卡详细信息值(架构名称、表名称、列名称、压缩类型)
我的挑战是如何读取标题,即schema_name.table_name并与细节合并
任何提示都将不胜感激
谢谢
更新:
我试着使用python,但出现了一个错误
import csv
with open ('2','r') as infile:
reader = csv.reader(infile)
header = next(reader)
mydict = dict(row[:2] for row in reader if row)
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
ValueError: dictionary update sequence element #26 has length 1; 2 is required
导入csv
以open('2','r')作为填充:
reader=csv.reader(infle)
页眉=下一个(读卡器)
mydict=dict(行[:2]用于读卡器中的行,如果为行)
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
ValueError:字典更新序列元素#26的长度为1;2是必需的
insert命令将在循环中执行。因此,当您拥有模式名称,然后是表、行、类型时,就可以创建一个启动集。在获得下一个模式之前,每个连续的匹配都是针对表、行和类型的?这是您示例中的实际文件格式吗?如果Python支持的话,我想应该使用\G
最后一个匹配结构。它是实际的文件。请给我一个代码示例。看起来最新的Python支持\G
。我不懂Python,所以我只能给你一个正则表达式来逐行捕获数据。够了吗?谢谢你的提示。让我来整理一下