Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用psycopg2从csv文件动态创建表_Python_Postgresql_Psycopg2 - Fatal编程技术网

Python 使用psycopg2从csv文件动态创建表

Python 使用psycopg2从csv文件动态创建表,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我想对这个问题有一些了解,我很确定这个问题对我来说是清楚的。是否有任何方法可以使用psycopg2或任何其他python Postgres数据库适配器创建表,其名称与.csv文件相对应,并且(可能是最重要的)具有在.csv文件中指定的列。我让您好好看看psycopg2库-这是我不知道的(暂时不必使用它,但IIRC的文档非常丰富) 这些步骤是: 从CSV文件中读取列名 创建“创建任何表”(…) 也许可以插入数据 导入操作系统路径 my_csv_file='/home/where/file.csv

我想对这个问题有一些了解,我很确定这个问题对我来说是清楚的。是否有任何方法可以使用psycopg2或任何其他python Postgres数据库适配器创建表,其名称与.csv文件相对应,并且(可能是最重要的)具有在.csv文件中指定的列。

我让您好好看看psycopg2库-这是我不知道的(暂时不必使用它,但IIRC的文档非常丰富)

这些步骤是:

  • 从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查询字符串