3

シェルで SQL を実行できます。

LOAD DATA LOCAL INPATH '/tmp/sql.txt' INTO TABLE files;

sql.txt の内容は次のとおりです。

4e6c924a-1fa2-4326-86eb-975d1007f0a6 FileScoreConverterTest.java /home/xiehaozhe/Development/Kloud-Document-Analyzer/kda/src/test/java/com/kda/filescore/type/FileScoreConverterTest.java
ab6ee610-c980-4ff7-b472-8546766e0f89 FileWordCountConverterTest.java /home/xiehaozhe/Development/Kloud-Document-Analyzer/kda/src/test/java/com/kda/filescore/type/FileWordCountConverterTest.java

テーブルの構造体(ファイルという名前)は

guid STRING
filename STRING
filepath STRING

Java で SQL を実行すると、例外が発生しました。

Exception in thread "main" java.sql.SQLException: Query returned non-zero code: 40000, cause: FAILED: ParseException line 1:54 mismatched input ';' expecting EOF near 'files'

コードは次のとおりです。

Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
String sql = "LOAD DATA LOCAL INPATH '" + sqlFilePath + "' INTO TABLE files;";
Connection connection = DriverManager.getConnection(databaseAddress, databaseUsername, databasePassword);
Statement statement = connection.createStatement();
statement.executeQuery(sql);

私は何をすべきか?

4

1 に答える 1

9

シェルでクエリを記述するときは、';' を使用する必要があります。SQL ステートメントの最後に:

LOAD DATA LOCAL INPATH '/tmp/sql.txt' INTO TABLE files;

ただし、「;」は使用できません。Java を使用している場合は、SQL ステートメントの最後に:

LOAD DATA LOCAL INPATH '/tmp/sql.txt' INTO TABLE files

だから、それが例外を引き起こす理由です。

于 2013-06-13T05:09:48.777 に答える