CSV,JAVA& HSQLDB

时间:2012-10-26 05:01:47

标签: java csv hsqldb

我在java编程中真的很新

我想问一下在java中读取 CSV然后将其上传到HSQLDB 。 我一直在阅读和阅读通过教程尝试解决方案的例子,但仍然没有真正理解。 根据我的阅读材料,大多数建议使用OpenCSV ,但

  1. 我可以用opencsv读取带分隔符或嵌套分隔符的csv吗?
    • opencsv以不同的方式读取我的* .csv文件,在一列中有多行。我希望它能在一行中阅读。
  2. 下面是示例

    B03BB510001T2001,儿童可用的多维生素*,“”PANTOTHENIC ACID 7.5MG,“ “PARA AMINO BENZOIC ACID(PABA)250MCG,” “FOLIC ACID 30MCG,” “BIOTIN 50MCG,” “THIAMINE MONO-NITRATE + B6 + B12 6.6MG,” “CHOLINE 1MG” “VIT A + VIT E + VIT C REFER FILE,” “INOSITOL 1MG”“,,”“TABLET,CHEWABLE”“,,,, B03,REGISTERED,75MG”

    但我希望它以单行

    显示
    1. 如何直接从csv文件插入数据库?
      • 我目前必须使用HSQLDB [独立服务器]。 我是否必须使用第三方工具来执行此操作
    2. **我只熟悉阅读&使用PHP& amp;从csv上传到数据库MYSQL不是java& hsqldb

      希望你能建议&帮助我。

3 个答案:

答案 0 :(得分:4)

以下是我用于将数据加载到每个fredt的HSQL中的示例脚本。您需要具有持久性DB才能使用文本表。如果在数据库管理器中运行,则一次只复制并执行一个语句。您还可以使用sqltool(sql脚本与数据库位于同一文件夹中):

\i demotexttable.sql

这是demotexttable.sql

/* file.txt needs to be in the same folder as the database
   first line of file is a header, others lines are data
--start file.txt
Col1|Col2|Col3
abcdef|My Company Name|0
--end file.txt
*/

--create the schema
create schema imp;

--create the normal table
create cached table imp.normalTable (
       Col1 char(6),
       Col2 nvarchar(200),
       Col3 int
);

--create the table that table
create text table imp.textfiletable (
       Col1 char(6),
       Col2 nvarchar(200),
       Col3 int
);

--setup the text file table
set table imp.textfiletable source "file.txt;ignore_first=true;fs=|";

--insert data from text file into the `normal` table
INSERT INTO imp.normalTable (Col1, Col2, Col3) select Col1, Col2, Col3 from imp.textfiletable;

--we are done with the text file table
drop table imp.textfiletable;
commit;

我在之前的帖子中发现了一些错误,我已经在最新版本中清理了它们。

答案 1 :(得分:2)

您可以将CSV文件直接加载到HSQLDB中。

有两种不同的方式:

  1. 使用HSQLDB的TEXT TABLE功能。您的文件不需要任何特殊设置,因为分隔符是默认设置。
  2. 使用HSQLDB的普通表并使用SqlTool加载CVS,SqlTool是随HSQLDB提供的附加jar。 SqlTool不仅可以用于HSLQLDB,还可以用于MySQL和其他数据库。
  3. 详情请见此处:

    http://hsqldb.org/doc/2.0/guide/texttables-chapt.html

    http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html#sqltool_csv-sect

答案 2 :(得分:0)

如您所知,CSV只不过是“逗号分隔值”。其他人提出OpenCSV的原因是因为它拥有商业友好许可证。虽然除此之外可以使用常规方法来检索值。这是使用FileInputStream读取值。请找到链接:

http://www.roseindia.net/java/beginners/java-read-file-line-by-line.shtml

之后使用分隔符解析单个String。 例如:String [] tokens = wholeString.split(delimiter);

现在只需通过使用java.sql包使用jdbc连接,就可以轻松地将值存储在hsql数据库中。请查看链接:

http://www.hsqldb.org/doc/guide/apb.html

希望这会帮助你; 的问候,

阿南德