python odo sql AssertionError: datashape must be Record type



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

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

var * {
    column: type
    ... 
}

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

AssertionError: datashape must be Record type, got 0 * {
  tod: ?string,
  interval: ?string,
  iops: float64,
  mb_per_sec: float64
}

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

下面是重现错误的代码的精简版本:

from odo import odo
odo('test.csv', mysql_database_uri)

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

感谢您的任何输入。

我遇到了这个错误,需要指定表

# error
odo('data.csv', 'postgresql://usr:pwd@ip/db')
# works
odo('data.csv', 'postgresql://usr:pwd@ip/db::table')

尝试替换

odo('test.csv', mysql_database_uri) 

odo(pandas.read_csv('test.csv') , mysql_database_uri)

Odo似乎有问题并停产。作为替代方案,您可以使用d6tstack,它具有快速的SQL功能,因为它使用本机数据库导入命令。它支持Postgres,MYSQL和MS SQL,

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')

对于在写入数据库之前导入多个具有数据模式更改和/或使用 pandas 预处理的 CSV 也特别有用,请参阅下面的示例笔记本

相关内容

最新更新