如何使用python自动将基于CSV的表创建到postgres中

2024-04-29

我是一名新的 Python 程序员,尝试使用 python 脚本将示例 CSV 文件导入到我的 Postgres 数据库中。
我有一个名为abstable1的CSV文件,它有3个标题:

Absid、名称、编号 我的一个文件夹中有很多这样的文件 我想在 PostgreSQL 中创建一个与所有 CSV 文件同名的表。

这是我尝试为一个文件创建一个表来测试的代码:

import psycopg2
import csv
import os

#filePath = 'c:\\Python27\\Scripts\\abstable1.csv'
conn = psycopg2.connect("host= hostnamexx dbname=dbnamexx user= usernamexx password= pwdxx")
print("Connecting to Database")
cur = conn.cursor()

#Uncomment to execute the code below to create a table
cur.execute("""CREATE TABLE abs.abstable1(
absid varchar(10) PRIMARY KEY,
name integer,
number integer 
)
 """)
#to copy the csv data into created table
with open('abstable1.csv', 'r') as f:
    next(f)
    cur.copy_from(f, 'abs.abstable1', sep=',')
conn.commit()
conn.close()

这是我收到的错误:

File "c:\Python27\Scripts\testabs.py", line 26, in <module>
    cur.copy_from(f, 'abs.abstable1', sep=',')
psycopg2.errors.QueryCanceled: COPY from stdin failed: error in .read() call: exceptions.ValueError Mixing iteration and read methods would lose data
CONTEXT:  COPY abstable1, line 1

非常感谢任何解决此问题的建议或替代解决方案。


以下是对我有用的方法:import glob

这段代码会自动读取文件夹中的所有 CSV 文件并创建一个与文件同名的表。尽管我仍在尝试弄清楚如何根据 CSV 中的数据提取特定的数据类型。 但就表创建而言,这对于文件夹中的所有 CSV 文件来说就像一个魅力。

import csv
import psycopg2
import os
import glob


conn = psycopg2.connect("host= hostnamexx dbname=dbnamexx user= usernamexx password= 
pwdxx")
print("Connecting to Database")

csvPath = "./TestDataLGA/"

# Loop through each CSV
for filename in glob.glob(csvPath+"*.csv"):
# Create a table name
tablename = filename.replace("./TestDataLGA\\", "").replace(".csv", "")
print tablename

# Open file
fileInput = open(filename, "r")

# Extract first line of file
firstLine = fileInput.readline().strip()


# Split columns into an array [...]
columns = firstLine.split(",")
     

# Build SQL code to drop table if exists and create table
sqlQueryCreate = 'DROP TABLE IF EXISTS '+ tablename + ";\n"
sqlQueryCreate += 'CREATE TABLE'+ tablename + "("

#some loop or function according to your requiremennt
# Define columns for table
for column in columns:
    sqlQueryCreate += column + " VARCHAR(64),\n"

sqlQueryCreate = sqlQueryCreate[:-2]
sqlQueryCreate += ");"

cur = conn.cursor()
cur.execute(sqlQueryCreate)
conn.commit()
cur.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用python自动将基于CSV的表创建到postgres中 的相关文章

随机推荐

  • 如何在 PHP 中从serializeArray 获取 POST 值?

    我正在尝试这个我见过的新方法serializeArray with ajax var data form input serializeArray post var action process data data ajax etc 这样我
  • 如何在 VS 2012 中获取水晶报表?

    我对 VS 2012 有疑问 即我想创建一个报告 例如特定学生的结果 我搜索了很多然后我知道我必须安装SAP Crystal Report 并且我已经这样做了 但工具箱中仍然没有水晶报表 只有两个项目 名为 报表 报表向导 有人可以帮我弄这
  • Action Cables、嵌套 JSON 属性和 JSONAPI

    我有一个相当具体的问题 我希望你们中的一个真正聪明的人可能知道解决方案 甚至是现阶段的解决方法 具体来说 我正在处理操作电缆 嵌套 JSON 和 JSONAPI 我有一个asset模型 它具有一些属性 例如name desc等等 但它还有一
  • 覆盖 Kotlin 数据类的 getter

    给定以下 Kotlin 类 data class Test val value Int 我将如何覆盖Intgetter 以便如果值为负数则返回 0 如果这是不可能的 有哪些技术可以达到合适的结果 在花了几乎一整年的时间每天编写 Kotlin
  • Typescript 上的 Drawflow 库

    我目前正在尝试实现 Jerosoler 制作的很棒的 Drawflow 库 在这里找到 https github com jerosoler Drawflow https github com jerosoler Drawflow 在我的
  • 在 UIButton 中垂直显示标题?

    我是 iPhone 编程新手 我被这个简单的问题困扰了 我有一个UIView with a UIButton在里面 维度为UIButton40x200 靠近左边距 我需要在按钮中垂直显示文本 有没有一种方法可以在不使用任何图像的情况下完成此
  • php 的睡眠函数

    作为使用 cron 作业的可能替代方案 我找到了 sleep 函数 我以前从未使用过这个 如果我告诉我的脚本在一种循环内运行 并且在该循环内我有这样的指令 sleeps for 86400 seconds or one day sleep
  • oracle中的数字格式

    Hai 我的数字格式有问题 我正在使用 oracle 我在数据库中有一个数字字段 但是当我检索它时 我需要将其视为浮点数 例如 在检索时 现在我得到的结果为 200 DR 借方的 DR 手动给出 现在我需要得到 200 00 DR 的结果
  • Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE'

    当我在 python 中运行测试用例时 python 规范化器 setup py 测试 我收到以下异常 ResourceWarning unclosed file lt io TextIOWrapper name Users workspa
  • 在我分叉了 github 项目后,如何才能保持原始项目的最新状态?

    在 github 上 在我分叉一个项目 修改它 然后提交我的拉取请求后 似乎我必须删除并重新分叉 以便在我的拉取请求得到尊重后保持最新状态 必须不断删除存储库才能使其保持最新状态 这似乎很乏味 有没有什么方法可以使其保持最新状态而无需删除和
  • Typescript 中此子范围的问题

    This is ALMOST和其他人一样this到目前为止 我已经读过范围界定问题 除了一个细微的差别之外 这使得提出这个问题变得有意义 imo 现在最初我的问题是范围this使用 Knockout 和 Typescript 因此给出以下内
  • 将接口作为参数传递给扩展方法

    我使用扩展方法来扩展 html 助手来制作 RSS 转发器 public static string RSSRepeater this HtmlHelper html IEnumerable
  • 角度 $q.all() 是否有第二次成功,如 jQuery $.get()

    查看 jQuery 文档 我发现了以下内容 get example php function alert success done function alert second success lt fail function alert e
  • FLTK 1.4 小部件位置 w.r.t. X11 根窗口?

    context 我正在和其他人一起编码参考系统 http refpersys org C 17 上的 GPLv3 项目gitlab https gitlab com bstarynk refpersys适用于 GNU Linux x86 6
  • 如何使用各个属性中的所有验证属性序列化模型?

    上下文 使用 mvc 控制器方法创建 jsonP 服务 该服务提供表单字段的定义 包括所有验证规则 我的问题是我不知道如何序列化验证属性 我更喜欢验证属性的格式与在常规 Mvc 视图中使用不显眼的验证时由 Razor 序列化的格式相同 为了
  • 更改 WCF 中的命名空间和 schemaLocation 属性

    我用 C 开发了一个 WCF 服务 我们的客户已经有一个用 Java 编写的客户端软件 他们说当他们尝试添加我们的 wcf 服务引用时 他们收到错误 他们认为问题在于命名空间 我对 WCF 中的命名空间或任何其他标记详细信息了解不多 他们说
  • Android - Google+ 共享状态失败

    我查看了 Google 关于如何将 Android 应用程序的状态共享到 Google 的说明 https developers google com mobile android share https developers google
  • $(sel).bind("click", $(sel).click(, $(sel).live("click", $(sel).on("click") 之间有什么显着差异?

    我已经使用它们很长一段时间了 但大多数时候 我更喜欢较短的 但是 我只想真正深入了解本质细节 我可能一直在创建有缺陷的代码 并且我不想在网络上贡献和传播懒惰完成的代码 所以告诉我 它们之间有哪些显着的优点 缺点 或者是 就像冰淇淋一样 不同
  • 如何使用 C# SDK 连接到 facebook 并调试 facebook 应用程序

    我真的很努力地试图找到一些真正适用于基础知识的启动和运行的东西 即使是 SDK 附带的教程应用程序似乎也必须上传才能工作 因此没有简单的方法在本地调试和测试它 有人有我可以使用的工作示例的链接吗 Cheers 这就是我目前在我的 aspx
  • 如何使用python自动将基于CSV的表创建到postgres中

    我是一名新的 Python 程序员 尝试使用 python 脚本将示例 CSV 文件导入到我的 Postgres 数据库中 我有一个名为abstable1的CSV文件 它有3个标题 Absid 名称 编号 我的一个文件夹中有很多这样的文件