テスト目的で、SQL スクリプトと CSV ファイルを使用していくつかのテーブルを作成して入力したいと考えています。
そこで、次のような SQL スクリプトを作成しました。
CREATE TABLE T_FOO (
...
) as select * from CSVREAD('classpath:/foo.csv');
ファイルはfoo.csv
存在し、 にありますsrc/test/resources
。
このスクリプトを Eclipse で実行すると (src/test/resources
はソース ディレクトリとして定義されているため、クラスパスに含まれています)、次のエラーが発生します。
Caused by: java.io.FileNotFoundException: resource /foo.csv
at org.h2.store.fs.FileSystemDisk.openFileInputStream(FileSystemDisk.java:388)
at org.h2.util.IOUtils.openFileInputStream(IOUtils.java:708)
at org.h2.tools.Csv.initRead(Csv.java:317)
at org.h2.tools.Csv.readResultSet(Csv.java:217)
at org.h2.tools.Csv.read(Csv.java:193)
... 49 more
私は何を間違えましたか?classpath:
プロトコルを正しく使用して CSV ファイルをロードするには?
ファイルの完全なパス(のように... CSVREAD('C:\my-project\src\test\resources\foo.csv');
)を入力すると、機能します。しかし、それが私がやりたい理由ではありません:)
このプロトコルを使用してファイルをロードしたかったので、H2 の最新バージョン ( 1.3.153 )を使用していることに注意してください。classpath: