के लिए क्लासपाथ में स्थित लोड सीएसवी फ़ाइल परीक्षण उद्देश्यों के लिए, मैं एसक्यूएल स्क्रिप्ट्स के साथ-साथ सीएसवी फाइलों का उपयोग करके कुछ टेबल बनाना और भरना चाहता हूं।एच 2 डाटाबेस
तो मैं इस तरह एक SQL स्क्रिप्ट बनाया:
CREATE TABLE T_FOO (
...
) as select * from CSVREAD('classpath:/foo.csv');
foo.csv
फ़ाइल मौजूद है, और src/test/resources
में स्थित है।
इस स्क्रिप्ट ग्रहण (जहां src/test/resources
एक स्रोत निर्देशिका के रूप में परिभाषित किया गया है और इस तरह classpath में शामिल है) पर चलाया जाता है, मैं निम्नलिखित त्रुटि मिलती है:
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
क्या मैं गलत क्या किया? एक CSV फ़ाइल लोड करने के लिए सही ढंग से classpath:
प्रोटोकॉल का उपयोग कैसे करें?
यदि मैं फ़ाइल के लिए पूरा पथ डालता हूं (जैसे ... CSVREAD('C:\my-project\src\test\resources\foo.csv');
), तो यह काम करता है। लेकिन ऐसा इसलिए नहीं है कि मैं ऐसा करना चाहता हूं :)
ध्यान दें कि मैं H2 (1.3.153) के नवीनतम संस्करण का उपयोग I wanted to use the classpath:
protocol to load my file के रूप में करता हूं।
एचएम, तब एक बग की तरह लगता है ... मैं जांच करूंगा। –
@ थॉमस म्यूएलर धन्यवाद :) – romaintaz