当前位置: 首页 > 知识库问答 >
问题:

在postgreql中使用COPY时,psycopg2.errors.InvalidTextPresation

锺离声
2023-03-14

我正在使用一个自定义的可调用的熊猫。to_sql()。下面的代码片段来自pandas文档,用于使用它

import csv
from io import StringIO

def psql_insert_copy(table, conn, keys, data_iter):
    """
    Execute SQL statement inserting data

    Parameters
    ----------
    table : pandas.io.sql.SQLTable
    conn : sqlalchemy.engine.Engine or sqlalchemy.engine.Connection
    keys : list of str
        Column names
    data_iter : Iterable that iterates the values to be inserted
    """
    # gets a DBAPI connection that can provide a cursor
    dbapi_conn = conn.connection
    with dbapi_conn.cursor() as cur:
        s_buf = StringIO()
        writer = csv.writer(s_buf)
        writer.writerows(data_iter)
        s_buf.seek(0)

        columns = ', '.join('"{}"'.format(k) for k in keys)
        if table.schema:
            table_name = '{}.{}'.format(table.schema, table.name)
        else:
            table_name = table.name

        sql = 'COPY {} ({}) FROM STDIN WITH CSV'.format(
            table_name, columns)
        cur.copy_expert(sql=sql, file=s_buf)

但是在使用这个复制功能时,我得到了错误

psycopg2.errors.InvalidTextRepresentation: invalid input syntax for integer: "3.0"

当我习惯于使用_sql()函数而不使用自定义可调用的“psql_insert_copy()”时,作为此表模式和值的输入在最初工作时不会出现问题。我正在使用sqlalchemy引擎获取连接光标

共有1个答案

甄华清
2023-03-14

我建议在表中使用字符串字段进行此类操作,或者手动编写整个(sql)脚本,指示表字段的类型

 类似资料:
  • 问题内容: 我有数千万行要从多维数组文件传输到PostgreSQL数据库。我的工具是Python和psycopg2。批量插入数据的最有效方法是使用。但是,我的数据主要是32位浮点数(实数或float4),所以我宁愿不从实数→文本→实数转换。这是一个示例数据库DDL: 这是我在Python中使用字符串(文本)的地方: 是否存在可以使用二进制模式运行的等效项?即,将浮点数保留为二进制?这样不仅可以保持

  • 问题内容: 我想将大量条目(〜600k)上传到PostgreSQL DB的一个简单表中,每个条目有一个外键,一个时间戳和3个浮点数。但是,每个条目要花费60毫秒才能执行此处所述的核心批量插入操作,因此整个执行过程将花费10个小时。我发现,这是方法的性能问题,但是已经用psycopg2 2.7中 的方法解决了。 我运行的代码如下: 我看到这是一个常见问题,但是我还没有设法在sqlalchemy本身中

  • 问题内容: 目前,我正在安装psycopg2以便在Eclipse中使用python工作。 我发现很多问题: 第一个问题不起作用,并显示以下消息 错误:找不到pg_config可执行文件。 固定于: 当我在项目中导入psycopg2时,我会观察: ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/pyth

  • 我尝试使用这个命令< code>docker build -t myimage在django中运行docker。现在docker文件尝试运行< code > RUN pip install-r/app/requirements . txt-no-cache-dir ,但是当ot到达< code >下载psycopg2-2.9.3.tar.gz(380 kB)部分时,它会抛出错误。 注意:我的req

  • 我有一个大型Sybase ASE C/C应用程序,我想将其迁移到Postgresql。应用程序使用的是Sybase CT库(没有什么复杂的:简单的SQL,很少批量上传等)。应用程序是使用SYBASE OCS-16在Linux上构建和运行的。 我正在尝试评估BabelFish扩展是否有助于加快迁移。 第一个挑战(从Sybsae迁移)是应用程序广泛使用多语句查询来返回多结果集,使用动态生成的Trans

  • 我在Postgres/Postgis中创建了一个点几何列(coordenadas),使用以下命令行: 我在tb_amostra表中有两列,LONGITUGE和LATITUDE,我需要根据经度和纬度列中的值将(lon,lat)的8位小数点创建到coordenadas列中。有什么帮助吗?提前感谢您抽出时间。