您好我正在尝试将带有几何的csv文件读入我的h2数据库但是我从vividsolutions.jts.io.parseException得到一个奇怪的例外:预期的单词但是找到了End-of-Stream。这可能是我失踪的愚蠢行为。 thx提前。
我的csv:
id,version,aangemaaktdoor,aanmaakdatum,laatstgewijzigddoor,laatstgewijzigdop,code,eigenaar,eigenaar_straat,eigenaar_nummer,eigenaar_bus,eigenaar_postcode,eigenaar_gemeente,straat,nummer,bus,postcode,gemeente,location,operator_id
1,0,Jacob,2013-09-16 19:42:15,Jacob,2014-09-04 05:23:00,ABC123,Dries Mertens,Tiensesteenweg,124,,3010,Leuven,Parkstraat,11,,3000,Leuven,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),1
2,0,Jacob,2013-11-23 11:00:00,Tom,2014-02-06 05:23:00,DEF456,Vincent Kompany,Kasteellaan,7,,1080,Sint-Jans-Molenbeek,Kasteellaan,7,,1080,Sint-Jans-Molenbeek,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),1
3,0,Tom,2013-07-16 14:42:00,Pascal,2014-09-18 14:48:00,KZR478,Jan Vertonghen,Broekstraat,8,,9140,Temse,Hoogkamerstraat,215,,9140,Temse,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),1
4,0,Pascal,2013-11-27 17:00:00,Tom,2014-02-14 05:23:00,LSM145,Marouane Fellaini,Tramstraat,291,,3300,Tienen,Tramstraat,289,,3300,Tienen,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),2
5,0,Pieter,2013-10-08 17:24:00,Tom,2014-09-14 11:54:00,NFK798,Kevin De Bruyne,Burgstraat,38,,9000,Gent,Burgstraat,38,,9000,Gent,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),3
6,0,Jacob,2013-09-16 19:42:15,Jacob,2014-09-04 05:23:00,SDV487,Eden Hazard,Brusselsestraat,35,,9500,Geraardsbergen,Heuvelstraat,27,,9500,Geraardsbergen,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),3
7,0,Jacob,2013-11-23 11:00:00,Tom,2014-02-06 05:23:00,ZAS475,Romelu Lukaku,Hingenesteenweg,133,,2880,Bornem,Hingenesteenweg,133,,2880,Bornem,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),3
8,0,Tom,2013-07-16 14:42:00,Pascal,2014-09-18 14:48:00,MPO148,Steven Defour,Bankstraat,52,,2811,Mechelen,Moensstraat,19,,2800,Mechelen,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),3
9,0,Tom,2013-07-16 14:42:00,Pascal,2014-09-18 14:48:00,MPO148,Axel Witsel,Kruisbaan,102,,3580,Beringen,Stippelberg,144,,2260,Westerlo,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),3
我的liquibase脚本:
<changeSet id="Spatialize DB" author="arno" dbms="h2">
<sql dbms="h2">CREATE ALIAS InitGeoDB for "geodb.GeoDB.InitGeoDB"</sql>
<sql dbms="h2">CALL InitGeoDB()</sql>
<rollback>
<sql dbms="h2">DROP ALIAS InitGeoDB</sql>
</rollback>
</changeSet>
<changeSet id="20150303083400" author="riquipa">
<createTable tableName="SITE">
<column name="id" type="bigint" defaultValueSequenceNext="hibernate_sequence">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="version" type="bigint"/>
<column name="aangemaaktdoor" type="varchar(255)"/>
<column name="aanmaakdatum" type="timestamp">
<constraints nullable="false"/>
</column>
<column name="laatstgewijzigddoor" type="varchar(255)"/>
<column name="laatstgewijzigdop" type="timestamp"/>
<column name="eigenaar" type="varchar(255)"/>
<column name="code" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="straat" type="varchar(255)"/>
<column name="nummer" type="varchar(255)"/>
<column name="bus" type="varchar(255)"/>
<column name="postcode" type="varchar(255)"/>
<column name="gemeente" type="varchar(255)"/>
<column name="eigenaar_straat" type="varchar(255)"/>
<column name="eigenaar_nummer" type="varchar(255)"/>
<column name="eigenaar_bus" type="varchar(255)"/>
<column name="eigenaar_postcode" type="varchar(255)"/>
<column name="eigenaar_gemeente" type="varchar(255)"/>
<column name="operator_id" type="bigint">
<constraints nullable="false"/>
</column>
</createTable>
<addColumn tableName="SITE">
<column name="location" type="GEOMETRY">
</column>
</addColumn>
</changeSet>
我的yml:
spring:
datasource:
dataSourceClassName: org.h2.jdbcx.JdbcDataSource
url: jdbc:h2:mem:zendantennes
databaseName:
serverName:
username:
password:
jpa:
database-platform: org.hibernate.spatial.dialect.h2geodb.GeoDBDialect
database: H2
openInView: false
show_sql: true
generate-ddl: false
hibernate:
ddl-auto: none
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
properties:
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: true
hibernate.hbm2ddl.auto: validate
最后我的测试给出了异常:
@Test
public void createSite(){
Site site = new Site();
Adres adres = new Adres();
adres.setBus("2");
adres.setGemeente("Schilde");
adres.setNummer("52");
adres.setPostcode("2970");
adres.setStraat("Eksterlaan");
site.setAdres(adres);
site.setAdresEigenaar(adres);
site.setCode("444");
Coordinate[] points = {new Coordinate(10,20), new Coordinate(20,10), new Coordinate(40,20)};
Polygon polygon = new Polygon(new LinearRing(new CoordinateArraySequence(points),new GeometryFactory(null, 31370)),null, new GeometryFactory(null, 31370));
polygon.setSRID(31370);
site.setLocation(polygon);
site.setEigenaar("proximus");
entiteitService.createOrUpdate(site);
}
输出是:
Caused by: org.h2.jdbc.JdbcSQLException: General error: "com.vividsolutions.jts.io.ParseException: Expected word but found End-of-Stream (line 1)"; SQL statement:
INSERT INTO PUBLIC.site (id, version, aangemaaktdoor, aanmaakdatum, laatstgewijzigddoor, laatstgewijzigdop, code, eigenaar, eigenaar_straat, eigenaar_nummer, eigenaar_bus, eigenaar_postcode, eigenaar_gemeente, straat, nummer, bus, postcode, gemeente, location, operator_id) VALUES ('1', '0', 'Jacob', '2013-09-16 19:42:15', 'Jacob', '2014-09-04 05:23:00', 'ABC123', 'Dries Mertens', 'Tiensesteenweg', '124', '', '3010', 'Leuven', 'Parkstraat', '11', '', '3000', 'Leuven', 'POLYGON ((30 10', ' 40 40') -- ('1', '0', 'Jacob', '2013-09-16 19:42:15', 'Jacob', '2014-09-04 05:23:00', 'ABC123', 'Dries Mertens', 'Tiensesteenweg', '124', '', '3010', 'Leuven', 'Parkstraat', '11', '', '3000', 'Leuven', 'POLYGON ((30 10', ' 40 40') [50000-176]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)
at org.h2.message.DbException.get(DbException.java:167)
at org.h2.message.DbException.convert(DbException.java:294)
at org.h2.value.ValueGeometry.get(ValueGeometry.java:106)
at org.h2.value.Value.convertTo(Value.java:897)
at org.h2.table.Column.convert(Column.java:151)
at org.h2.command.dml.Insert.insertRows(Insert.java:144)
at org.h2.command.dml.Insert.update(Insert.java:115)
at org.h2.command.CommandContainer.update(CommandContainer.java:79)
at org.h2.command.Command.executeUpdate(Command.java:254)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:186)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:160)
at com.zaxxer.hikari.proxy.StatementJavassistProxy.execute(StatementJavassistProxy.java)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:294)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:54)
... 56 more
Caused by: com.vividsolutions.jts.io.ParseException: Expected word but found End-of-Stream (line 1)
at com.vividsolutions.jts.io.WKTReader.parseErrorWithLine(WKTReader.java:427)
at com.vividsolutions.jts.io.WKTReader.parseErrorExpected(WKTReader.java:421)
at com.vividsolutions.jts.io.WKTReader.getNextWord(WKTReader.java:384)
at com.vividsolutions.jts.io.WKTReader.getNextCloserOrComma(WKTReader.java:335)
at com.vividsolutions.jts.io.WKTReader.getCoordinates(WKTReader.java:231)
at com.vividsolutions.jts.io.WKTReader.readLinearRingText(WKTReader.java:549)
at com.vividsolutions.jts.io.WKTReader.readPolygonText(WKTReader.java:635)
at com.vividsolutions.jts.io.WKTReader.readGeometryTaggedText(WKTReader.java:481)
at com.vividsolutions.jts.io.WKTReader.read(WKTReader.java:205)
at com.vividsolutions.jts.io.WKTReader.read(WKTReader.java:174)
at org.h2.value.ValueGeometry.get(ValueGeometry.java:103)
... 67 more