首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python odo sql AssertionError:数据形状必须为记录类型,已获取0* {...}

python odo sql AssertionError:数据形状必须为记录类型,已获取0* {...}
EN

Stack Overflow用户
提问于 2017-06-17 06:27:10
回答 3查看 728关注 0票数 5

我正在尝试使用odo将CSV导入到MySQL中,但遇到了数据整形错误。

我的理解是,数据形状采用以下格式:

代码语言:javascript
复制
var * {
    column: type
    ... 
}

其中var表示可变数量的行数。我得到以下错误:

代码语言:javascript
复制
AssertionError: datashape must be Record type, got 0 * {
  tod: ?string,
  interval: ?string,
  iops: float64,
  mb_per_sec: float64
}

我不确定0行数是从哪里来的。我尝试使用dshape()显式设置数据形状,但仍然得到相同的错误。

以下是重新创建错误的代码的精简版本:

代码语言:javascript
复制
from odo import odo

odo('test.csv', mysql_database_uri)

我正在使用Conda运行Ubuntu 16.04和Python 3.6.1。

感谢您的任何意见。

EN

回答 3

Stack Overflow用户

发布于 2017-10-03 05:03:30

我有这个错误,需要指定表

代码语言:javascript
复制
# error
odo('data.csv', 'postgresql://usr:pwd@ip/db')

# works
odo('data.csv', 'postgresql://usr:pwd@ip/db::table')
票数 1
EN

Stack Overflow用户

发布于 2017-07-19 01:05:24

尝试替换

代码语言:javascript
复制
odo('test.csv', mysql_database_uri) 

使用

代码语言:javascript
复制
odo(pandas.read_csv('test.csv') , mysql_database_uri)
票数 0
EN

Stack Overflow用户

发布于 2019-02-12 23:53:43

Odo似乎有问题,而且已经停产了。作为替代,您可以使用具有fast pandas to SQL functionalityd6tstack,因为它使用本机DB导入命令。它支持Postgres、MYSQL和MS SQL,

代码语言:javascript
复制
cfg_uri_mysql = 'mysql+mysqlconnector://testusr:testpwd@localhost/testdb'
d6tstack.combine_csv.CombinerCSV(glob.glob('*.csv'), 
    apply_after_read=apply_fun).to_mysql_combine(uri_psql, 'table')

对于导入具有数据模式更改的多个CSV和/或在写入db之前使用pandas进行预处理,也特别有用,请参见examples notebook中的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44598799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档