Python 使用psycopg2从csv文件动态创建表
我想对这个问题有一些了解,我很确定这个问题对我来说是清楚的。是否有任何方法可以使用psycopg2或任何其他python Postgres数据库适配器创建表,其名称与.csv文件相对应,并且(可能是最重要的)具有在.csv文件中指定的列。我让您好好看看psycopg2库-这是我不知道的(暂时不必使用它,但IIRC的文档非常丰富) 这些步骤是:Python 使用psycopg2从csv文件动态创建表,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我想对这个问题有一些了解,我很确定这个问题对我来说是清楚的。是否有任何方法可以使用psycopg2或任何其他python Postgres数据库适配器创建表,其名称与.csv文件相对应,并且(可能是最重要的)具有在.csv文件中指定的列。我让您好好看看psycopg2库-这是我不知道的(暂时不必使用它,但IIRC的文档非常丰富) 这些步骤是: 从CSV文件中读取列名 创建“创建任何表”(…) 也许可以插入数据 导入操作系统路径 my_csv_file='/home/where/file.csv
- 从CSV文件中读取列名
- 创建“创建任何表”(…)
- 也许可以插入数据 导入操作系统路径 my_csv_file='/home/where/file.csv' table_name=os.path.splitext(os.path.split(my_csv_文件)[1])[0] cols=next(csv.reader(打开(我的csv文件)))
创建SQL查询(可能对字段使用模板引擎,然后根据需要发出insert)是的,python是一种通用编程语言,可以让您实现这一点。我一定会尝试您的解决方案,但让我问一下如何为每列声明类型,我基本上只希望这两种类型之间有两种不同列的文件类型。是否可以将每列的类型存储在字典中,然后基于文件类型的en将该字典传递给create table语句。我很确定字典类型不可能,但请您考虑可能的实现。感谢您的快速响应。您可以有一个字典{'file1.csv':1,'file2.csv':2,'file3.csv':1}它将文件名映射到两种文件格式中的一种。然后是另一种,例如{(1,'name'):'text',(1,'gender'):'char(1);(2,'age'):'integer'}…字典包含一个2元组的文件类型和列名,并映射到列类型。这就是您要问的吗?是的,这正是我要问的,但我怀疑psycopg2 CREATE TABLE语句是否会接受这些类型的参数?我将尝试一下,希望稍后会提供代码。再次感谢您,我不会接受di但您可以使用它们来构造有效的SQL查询字符串