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

H2数据库,通过从CSVREAD中选择结果插入

潘俊
2023-03-14

我有一个CSV文件,如

1,hello,13
2,world,14
3,ciao,26

我正在尝试使用CSVREAD函数将此文件读入数据库,如下所示

insert into my_table( id, message, code ) values (
  select convert( "id",bigint ), "message", convert( "code", bigint)
  from CSVREAD( 'myfile.csv', 'id,message,code', null )
);

出于某种原因,我一直得到< code>SQL错误,指出列数不匹配。

该表是使用Hibernate / GORM创建的,并包含我尝试插入的字段。

select本身似乎可以工作,或者至少在单独执行时不会导致任何错误。我的说法有什么问题?

共有1个答案

昌琪
2023-03-14

你用过

insert into my_table(...) values (select ...)

但是你应该使用,如SQL铁路图所示,

insert into my_table(...) select ...

实际上,对于H2,如果您按如下方式创建表,则速度会更快一些,但我知道这并不总是可能的:

create table my_table(...) as select ...
 类似资料:
  • 我有存储在一个文件夹中的csv文件列表。 可以在h2数据库中使用csvread命令读取文件夹中的所有csv文件吗?文件夹中csv文件的数量也是动态的。

  • 问题内容: 我正在尝试使用H2的runscript运行sql脚本。 该表之一包含一个长文本类型,该类型存储了一个xml文档(来自SAP数据库) 因此,Insert语句包含XML的长文本(大约200行XML),虽然很难看,但仍然可以使用。 在SQL解析期间,H2因ArrayOutOfBoundException而崩溃。 插入语句接受的长度是否有限制? 在nsert中,我使用刻度(如mysql中所使用

  • 问题内容: 基本上我想要的是以下代码的工作版本: 错误: 原因: 根据MySQL Doc: 只要服务器运行,InnoDB就会使用内存中的自动增量计数器。如前所述,当服务器停止并重新启动时,InnoDB将为该表的第一个INSERT重新初始化每个表的计数器。 这意味着每当我重新启动服务器时,我的auto_increment值都将设置为最小。 我有一个叫的表,另一个叫的表。他们两个都有共享的列。表格中的

  • 问题内容: 我想知道是否可以运行这样的请求: 这个想法是用t1的一些数据填充t2,但是我在语法上一定是错误的。 谢谢你的帮助 问题答案: 从语句插入时不使用关键字。

  • 各位, H2跳过/删除以下csv-Dataset的第一行...我找不到解决方案或解决方法。我已经浏览了各种H2教程,当然还浏览了一下互联网... 我是唯一一个(新手——我的“家”是IBM大型机)使用CSVREAD插入H2数据库有这样的问题吗? 在本例中,我希望CSVREAD实用程序插入5(五!)将行写入创建的表“VL01T098”。 !!!csv-dataset中没有“列-标题-行”——我只能通过

  • 问题内容: 我有一个称为Data的数据库,它是数据库中每个实体的父级。它包含Id等通用属性。然后,我有了一个扩展Data的实体,这也是由于其子类的通用功能而引起的。我的数据库中的映射是正确的。 这是我的等级制度的一个例子 并且表已正确映射: 无论如何,是否在数据库中查询所有作为Employee实例的Employee子类(FullTimeEmployee,PartTimeEmployee),而不在查