2

私はJavaプログラミングで本当に新しいです

JavaでCSVを読み取ってから、HSQLDBにアップロードする方法について質問したいと思います。私はチュートリアルを通して解決策の例を読んで試しましたが、それでも本当に理解していません。私の読書から、ほとんどはOpenCSVを使用することを提案しましたが

  1. 区切り文字を使用してcsvを読み取ることはできますか、またはopencsvを使用してネストされた区切り文字を読み取ることはできますか?
    • opencsvは、1つの列に複数の行がある別の方法で*.csvファイルを読み取ります。すべて私はそれが単一の行で読まれることを望みます。

以下は例です

B03BB510001T2001,,子供用チュアブルマルチビタミン*,,""パントテン酸7.5MG"、"パラアミノ安息香酸(PABA)250MCG "、"葉酸30MCG "、"ビオチン50MCG "、"チアミンモノ硝酸塩+ B6 + B12 MG、 "" CHOLINE 1MG "、" VIT A + VIT E + VIT C REFER FILE、 "" INOSITOL 1MG "" ,, "" TABLET、CHEWABLE "" ,,,, B03、REGISTERED、75MG "

しかし、私はそれを単一の行に表示したい

  1. csvファイルからデータベースに直接挿入するにはどうすればよいですか?
    • 現在、HSQLDB[スタンドアロンサーバー]を使用する必要があります。これを行うには、サードパーティのツールを使用する必要がありますか?

**私は、java&hsqldbではなくPHPとMYSQLを使用してcsvからデータベースに読み取りとアップロードを行うのはおなじみです

あなたが私を提案して助けてくれることを願っています。

4

3 に答える 3

4

これは、fredtごとにHSQLにデータをロードするために使用したサンプルスクリプトです。テキストテーブルを使用するには、永続的なDBが必要です。データベース・マネージャーで実行する場合は、一度に1つのステートメントをコピーして実行するだけです。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に直接ロードできます。

2つの異なる方法があります。

  1. HSQLDBのTEXTTABLE機能を使用します。区切り文字がデフォルトであるため、ファイルに特別な設定は必要ありません。
  2. HSQLDBの通常のテーブルを使用し、HSQLDBで提供される追加のjarであるSqlToolを使用してCVSをロードします。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を提案した理由は、OpenCSVが商業的に友好的なライセンスを持っているからです。それとは別に、通常の方法を使用して値を取得できます。FileInputStreamを使用して値を読み取ります。リンクを見つけてください。

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

その後、区切り文字を使用して個々の文字列を解析します。例:String[]トークン=wholeString.split(delimiter);

これで、java.sqlパッケージを使用してjdbc接続を使用するだけで、hsqlデータベースに値を簡単に保存できます。リンクを確認してください。

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

これがお役に立てば幸いです。よろしく、

アナンド

于 2012-10-26T06:27:21.153 に答える