问题标签 [pandas-to-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
387 浏览

python-3.x - 我得到 TypeError:在数据帧 python 3 上使用 to_sql 时,不能在类似字节的对象上使用字符串模式

您好我正在尝试使用 df.to_sql 将数据帧写入我的 sql 数据库,但是我收到错误消息:TypeError: cannot use a string pattern on a bytes-like object。我正在使用 Python 3。

我在我的驱动器上使用了一条路径,很遗憾我不能分享。但是当我只想使用打开 csv 文件时它工作正常。 df = pd.read_csv(path, delimiter=';', engine='python', low_memory=True, encoding='utf-8-sig') 我正在使用编码项,否则它们在我的索引列中是一个奇怪的对象。但也没有使用编码我得到同样的错误。

我也在df.dtypes我的数据框上使用过,但没有字节对象。只有 int、objects 和 floats。我还试图弄清楚我的数据框中是否有类似字节的对象,bytes(df[x]).decode('utf-8')但我只得到整数列而不是对象列。我试图解码然后使用 to_sql 但没有任何帮助。 df.to_sql('DMM_2300', con=engine, index=False, if_exists='append')

有人可以帮忙吗?

0 投票
0 回答
211 浏览

python-3.x - 在数据帧上使用 to_sql 时,%b 需要一个类似字节的对象,或实现 __bytes__ 的对象,而不是 'str'

使用这个基本的 read_csv 和 to_sql 脚本时,我得到以下错误代码。有人可以解释一下我的系统做错了什么。我曾经工作过,但过了一段时间我收到了这些错误消息。我还查看了我的 MySQL 数据库,但它也可以上传 varchar(256)。

0 投票
1 回答
592 浏览

python - 当列包含空值时,Pandas to_sql 忽略 dtype

第一个 SO 问题。我希望这是足够的描述性。

熊猫 0.25,甲骨文 11g

我有一个从 csv 读取的数据框。它包含数字、字符串和日期数据的混合。

.astype(str)我使用,.astype(int)和强制数据框中的数据类型.to_datetime

然后我创建一个 dtype 字典来选择我想要的数据类型。

当数字列中有一些空值types.NUMBER并在 Oracle 表中types.INTEGER创建一个。FLOAT应该是NUMBER(38,0),特别是如果我使用types.INTEGER. 定义为 types.NUMBER并包含所有非空整数的键列NUMBER(38,0)按预期创建。

当存在所有为空的列但已.astype(str)应用并且types.VARCHAR(300)列的 dtype 也像FLOAT在 Oracle 中一样创建时。

我需要if_exists='append'在 to_sql 中使用,因为表会收集历史记录,所以我迫不及待地等待 VARCHAR 列接收数据。尽管我在测试期间一直在使用if_exists='replace以确保删除并重新创建表。

有没有办法解决这些问题,由数据中的空值引起,导致数据类型选择不正确?我不应该需要在字符串中使用空格(即'')和整数使用0,我需要空值作为空值。

日期列中的空值,即使整个列都是空值也有效,并DATE根据要求在 Oracle 中创建。

编辑:字符串到 VARCHAR 问题实际上是一个被捕获和错误处理的异常的问题。

数字仍然是一个必须单独处理的问题,我将在解决方案中添加一个答案。

0 投票
0 回答
245 浏览

python - Python/SQL 加载错误:对于准备好的语句,超出了每个会话 20 MB 的内存限制

我正在使用 Pandas to_sql 加载仅包含大约 6k 行数据的 CSV。我有一个非常大的 Azure Synapse DW,容量绰绰有余,但我遇到了一个问题,它会加载大约 1.5k 行,然后因内存不足错误而失败:

我的代码如下所示:

我试图设置一个块大小,但似乎没有影响。为什么它在这么小的数据集上苦苦挣扎,我该如何加载完整的 csv 文件?

0 投票
1 回答
159 浏览

python - 如何创建 to_sql create_engine

我正在尝试将数据框信息添加到 PostgreSQL 的表中。

但我不知道如何创建引擎。它很可能与与 SQL 服务器的连接有关,但我不知道如何创建它。

我在 to_sql 文档上看到的例子是:

我尝试的是:

0 投票
2 回答
1303 浏览

django-models - django中的pandas to_sql:将外键插入数据库

使用 pandas to_sql 函数时有没有办法插入外键?

在将它们添加到数据库(postgres)之前,我正在Consultation使用 django 中的 pandas 处理上传的 s(n=40k)。我逐行完成了这个工作,但这需要 15 到 20 分钟。这比我希望我的用户等待的时间要长,所以我正在寻找更有效的解决方案。

consultations我尝试了 pandas to_sql,但在调用to_sql函数之前,我无法弄清楚如何将两个外键关系作为列添加到我的数据框中。有没有办法将 Patient 和 Praktijk 外键添加为数据框中的列consultations

更具体地说,当逐行插入时,我使用类型 Patient的对象或Praktijk在数据库中创建新的咨询时。但是,在数据框中,我不能使用这些类型,因此不知道如何正确添加外键。是否可能有一个类型的值objectint(患者的 id?)可以替代 Patient 类型的值,从而设置外键?

Consultation型号:

to_sql来电:

如果以上是不可能的,是否有其他更有效的解决方案的提示?

0 投票
0 回答
226 浏览

pandas - Sqlalchemy Teradata ODBC 17.00 to_sql QVCI 错误 CAST CLOB 类型为 DATE

我正在尝试将 pandasto_sql用于 Teradata 数据库中的现有表,但出现此 QVCI 错误。经过一些在线研究,我将我的 ODBC 驱动程序升级到 17.00,但我仍然得到同样的错误。

现有表:

在此处输入图像描述

我在用sqlalchemy_teradata

这是代码: a_df.to_sql(name='TEST_LA_TEMP', con=engine, schema='DB', if_exists='replace', index=False)

然后我尝试指定类型,但得到了同样的错误。

错误:

当我使用相同的代码导入新(不存在)表时,它工作正常,但CLOB作为大多数列的数据类型返回

在此处输入图像描述

然后我尝试将CLOB类型转换为正确的类型,但它说CLOBs can only be converted to CHAR TO VARCHAR缺少我的update_date专栏。

如果我改用它,我可以让它工作if_exists='append',然后再次删除并创建表。但我仍然想了解为什么以及如何解决这些错误。

问题:

  1. 直接为 Teradata 启用 QVCI 的语法是什么?
  2. 有没有办法将 CLOB 转换为 DATE?如何?
  3. 为什么if_exists='replace'依赖 QVCI 而不是if_exists='append'

谢谢!

0 投票
0 回答
22 浏览

database - 无法将数据帧发送到 oracle。(将数据框导出到 oracle)

无法将数据从 pandas(Dataframe)发送到 oracle 数据库。

0 投票
3 回答
263 浏览

python - CSV 到 SQL Server:批量导入噩梦(T-SQL 和/或 Pandas)

我正在尝试将.CSV文件批量插入 SQL Server,但没有取得多大成功。

一点背景:

1.我需要在 SQL Server (2017) 数据库中插入 1600 万条记录。每条记录有 130 列。我在我们的一个供应商的 API 调用的结果中有一个字段.CSV,我不允许提及。我有整数、浮点数和字符串数据类型。

2.我尝试了通常的方法:BULK INSERT但我无法通过数据类型错误。我在这里发布了一个问题,但无法使其发挥作用。

3.我尝试使用 python 进行实验,并尝试了我能找到的所有方法,但pandas.to_sql每个人都警告说它非常慢。我遇到了数据类型和字符串截断错误。与来自 的不同BULK INSERT

4.没有太多选择,我尝试了pd.to_sql,虽然它没有引发任何数据类型或截断错误,但由于我的 tmp SQL 数据库空间不足而失败。尽管我有足够的空间并且我的所有数据文件(和日志文件)都设置为无限制的自动增长,但我也无法传递此错误。

我当时就卡住了。我的代码(对于这pd.to_sql件作品)很简单:

我不确定还有什么可以尝试的,欢迎任何建议。我见过的所有代码和示例都处理小型数据集(列不多)。我愿意尝试任何其他方法。我会很感激任何指示。

谢谢!

0 投票
2 回答
1737 浏览

python - 追加到云上现有表时出现 Python 和雪花错误

我正在尝试将数据框上传到雪花云中的现有表中。这是数据框:

在此处输入图像描述

现在,当使用to_sql()from pandas 将数据附加到现有表中时:

我收到以下错误:

DatabaseError:执行失败 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;':字符串格式化期间并非所有参数都转换

TypeError:字符串格式化期间并非所有参数都转换了

一些列名包含破折号和下划线。