2

我真的是java编程新手

我想询问有关在 java 中读取 CSV 然后将其上传到 HSQLDB的问题。我一直在阅读并通过教程尝试解决方案的示例,但仍然不太了解。根据我的阅读,大多数人建议使用 OpenCSV,但

  1. 我可以读取带有分隔符的 csv 或带有 opencsv 的嵌套分隔符吗?
    • opencsv 以不同的方式读取我的 *.csv 文件,一列中有多行。我希望它在一行中被读取。

下面是例子

B03BB510001T2001,,儿童咀嚼多种维生素*,,”“泛酸 7.5MG”,“对氨基苯甲酸 (PABA) 250MCG,”“叶酸 30MCG”,“生物素 50MCG”,“硝酸硫胺 + B6 + B12 6.6 MG," "CHOLINE 1MG," "VIT A + VIT E + VIT C REFER FILE," "肌醇 1MG",""片剂, 咀嚼片"",,,,B03,注册,75MG"

但我希望它显示在一行中

  1. 如何直接从 csv 文件插入数据库?
    • 我目前必须使用 HSQLDB [独立服务器]。我是否必须使用第三方工具才能做到这一点

**我只熟悉使用 PHP 和 MYSQL 而非 java 和 hsqldb 从 csv 读取和上传到数据库

希望你能建议和帮助我。

4

3 回答 3

4

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

\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;

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

于 2012-10-26T22:46:09.843 回答
2

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

有两种不同的方式:

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

有关详细信息,请参见此处:

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

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

于 2012-10-26T07:18:58.050 回答
0

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

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

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

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

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

希望这可以帮助你; 问候,

阿南德

于 2012-10-26T06:27:21.153 回答