在 Oracle DB 中将 pandas(字符串/对象)列保存为 VARCHAR 而不是 CLOB(默认行为)

2023-11-27

我正在尝试将数据帧传输到 Oracle 数据库,但传输时间太长,因为变量的数据类型显示为clob在甲骨文中。但是我相信如果我将数据类型转换为clob到字符串9 digits with 填充0,不会花那么多时间。数据是

product
000012320
000234234

有没有办法将此变量的数据类型更改为 9 位数字的字符串。这样oracle就不会认为它是CLOB对象。我已经尝试过以下方法。

df['product']=df['product'].astype(str)

或者还有其他什么可能会减慢从 python 到 oracle 的传输速度吗?


这是一个演示:

import cx_Oracle
from sqlalchemy import types, create_engine
engine = create_engine('oracle://user:password@host_or_scan_address:1521:ORACLE_SID')
#engine = create_engine('oracle://user:password@host_or_scan_address:1521/ORACLE_SERVICE_NAME')

In [32]: df
Out[32]:
           c_str  c_int   c_float
0        aaaaaaa      4  0.046531
1            bbb      6  0.987804
2  ccccccccccccc      7  0.931600

In [33]: df.to_sql('test', engine, index_label='id', if_exists='replace')

在 Oracle 数据库中:

SQL> desc test
 Name                Null?    Type
 ------------------- -------- -------------
 ID                           NUMBER(19)
 C_STR                        CLOB
 C_INT                        NUMBER(38)
 C_FLOAT                      FLOAT(126)

现在让我们指定一个 SQLAlchemy dtype:'VARCHAR(max_length_of_C_STR_column)':

In [41]: df.c_str.str.len().max()
Out[41]: 13

In [42]: df.to_sql('test', engine, index_label='id', if_exists='replace',
   ....:           dtype={'c_str': types.VARCHAR(df.c_str.str.len().max())})

在 Oracle 数据库中:

SQL> desc test
 Name            Null?    Type
 --------------- -------- -------------------
 ID                       NUMBER(19)
 C_STR                    VARCHAR2(13 CHAR)
 C_INT                    NUMBER(38)
 C_FLOAT                  FLOAT(126)

PS 用 0 填充字符串请检查@piRSquared 的回答

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

在 Oracle DB 中将 pandas(字符串/对象)列保存为 VARCHAR 而不是 CLOB(默认行为) 的相关文章

随机推荐

  • React-router v4 页面刷新不起作用

    我可能错过了历史或其他什么但是当我refresh子路由上的页面 例如 login或我得到的任何其他路线 403 禁忌 代码 拒绝访问 消息 访问被拒绝 请求 ID 075CAA73BDC6F1B9 主机 ID O1n36xVCoeu aLa
  • PHP/MySQL - “最高评价”的算法

    所以我只是建立了一个星级评级系统 并尝试提出一种算法来列出 最高评级 的项目 为简单起见 以下是各列 item name average rating a decimal from 1 to 5 num votes 我正在尝试确定票数和评分
  • 在 dockerfile 中的 FROM 中使用 ARG

    问题陈述 我需要根据提供的arg从两个不同的url中提取docker projectS和project ARG url docker local artifactory com projectA By default its for A R
  • 重置 Django 缓存模板加载器的缓存

    Django 1 2 引入了一个新的模板加载器 它将数据存储在缓存中 django template loaders cached Loader 不幸的是 我未能找到有关缓存如何失效以及何时以及如何重置的任何信息 我想在我的服务器上使用它
  • TypeScript:reduce 函数 - 没有重载与此调用匹配

    尝试编写一个基本的减速器以从对象数组中返回键 的值 数组 某些键可能丢失或未定义 My code const data Key 56 Key undefined Key 44 const keys data reduce prev curr
  • $(document).ready() 和在正文末尾包含脚本有什么区别?

    在 jQuery 的 document ready 上执行 JavaScript 函数与将其包含在 HTML 正文末尾的脚本标记中之间有什么区别 Thanks DLiKS 里面的 JavaScript 代码
  • 为什么 n^O(1) 意味着“多项式时间”?

    An algorithm runs in polynomial time if it s runtime is O nk for some k However I ve also seen polynomial time defined a
  • 获取当前笔记本电脑盖子状态

    我正在编写一个 C 应用程序 专门用于笔记本电脑 我想了解盖子的状态 即何时打开以及何时关闭 我已经使用了 pInvoke 以及微软的RegisterPowerSettingNotification函数在 的帮助下这个答案 因此 通过上述内
  • PDFSharp:使用自动换行测量长文本的高度

    PDFSharp 在绘制长文本部分时支持自动文本换行 textFormatter DrawString text font XBrushes Black new XRect x y textAreaWidth 1000 XStringFor
  • 如何在列标题中使用希腊字母在 rmarkdown 中创建表格?

    我正在尝试在 rmarkdown 中创建一个表kable and kableExtra我想把希腊字母放在add header above功能 kable a format latex booktabs T longtable T gt ka
  • 更改多个 Python 实例中的变量

    是否可以同时设置类的所有实例的变量 我有一个简化的例子如下 class Object def init self self speed 0 instance0 Object instance1 Object instance2 Object
  • CSS 有类似 jQuery 的 :has() 的东西吗?

    在CSS 任何版本 中 是否有类似的东西 或者任何其他方式来做类似的事情 has jQuery 中的选择器 jQuery has selector 描述 选择元素 至少包含一个元素 匹配指定的选择器 http api jquery com
  • 如何向使用 ggplot2 创建的分区统计图添加标签?

    我正在尝试向我在 ggplot2 中创建的分区统计图添加文本注释 但目前失败 我正在寻求用名称标记每个多边形 地方政府区域 在我继续之前 我知道有人在 SO 上提出了类似的问题 并在 非常好的 教程中详细介绍了这一问题here 但是 我尝试
  • 将子目录(已重命名!)分离到新的存储库中

    我有一个存储库 我想将其目录之一分离到一个新的存储库中 This是一个完美的起点 但是有一个警告 我想要分离的目录在某个时候被重命名 如果我按照该帖子中的解决方案使用目录的新名称 那么我似乎会丢失重命名之前的历史记录 有什么想法可以调整以使
  • 在任意 scala 代码位置期间放入解释器

    我有 Python 背景 我可以在代码中的任何位置添加 import pdb pdb set trace 在运行时 我将在该位置进入交互式解释器 scala 是否有等效的 或者这在运行时不可能 是的 在 Scala 2 8 上可以 请注意
  • 用于数组元素的 LIKE 查询的 LINQ

    假设我有一个数组 我想对 varchar 执行 LINQ 查询 返回在 varchar 中任何位置具有数组元素的任何记录 这样的事情会很甜蜜 string industries airline railroad var query 来自联系
  • 一起使用 SQL LIKE 和 IN

    有没有办法同时使用LIKE和IN 我想实现这样的目标 SELECT FROM tablename WHERE column IN M510 M615 M515 M612 所以基本上我希望能够将列与一堆不同的字符串相匹配 是否有另一种方法可以
  • OS X 的默认命令如何访问沙盒应用程序的首选项?

    我正在编写一个首选项编辑器工具 请参阅http www tempel org PrefsEditor 它实际上是 GUI 版本defaults命令 不过 我在读取 更不用说编写 随机沙盒应用程序的偏好时遇到了困难 例如 当我尝试获取地图应用
  • Apache POI 5 和 XMLBeans 类路径问题

    我尝试在下面的帖子中回答 但我没有 声誉 也确实没有时间去寻找 10 个问题来回答 运行时异常 POI 5 和 xmlbeans 对于 WebLogic 服务器中的 POI 5 和 XMLBeans 4 或 5 存在类加载器问题 它将尝试使
  • 在 Oracle DB 中将 pandas(字符串/对象)列保存为 VARCHAR 而不是 CLOB(默认行为)

    我正在尝试将数据帧传输到 Oracle 数据库 但传输时间太长 因为变量的数据类型显示为clob在甲骨文中 但是我相信如果我将数据类型转换为clob到字符串9 digits with 填充0 不会花那么多时间 数据是 product 000