2

Spring3.1.2とHibernate4.1.5_SP1を使用しています。動的に作成されたAccessファイルにCSVファイルをインポートしようとしています。コードは次のようになります。

    final SingleConnectionDataSource ds = new SingleConnectionDataSource();
    ds.setUrl(myBean.getMicrosoftAccessDriverUrl() + file.getAbsolutePath());
    final JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
    final String strSQL = "SELECT * INTO " + accessTableName + " FROM 
         [Text;HDR=YES;DATABASE=" + csvFile.getPath()+ ";].[" + 
         csvFile.getName() + "]";
    jdbcTemplate.execute(strSQL);
    ds.getConnection().close();

これは次のようなエラーを生成します:

 org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad 
 SQL grammar 
  [SELECT * INTO myTable 
  FROM [Text;HDR=YES;DATABASE=C:\somePath;].[myAccessFile.accdb]]; 
 nested exception is java.sql.SQLException: [Microsoft][ODBC Microsoft 
 Access Driver]  Cannot update. Database or object is read-only.

私のデータソースのURLは次のようなものです。

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\somePath\myAccessFile.accdb

ファイルを確認しましたが、読み取り専用ではありません。これを解決する方法について何か提案はありますか?

ありがとう!

4

1 に答える 1

1

このFROM句は私には正しく見えません。

SELECT * INTO myTable 
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[myAccessFile.accdb]

CSV から Access テーブルにインポートするつもりだったと思います。もしそうなら、Access ファイル ( ) の代わりに CSV ファイル名を使用する必要があると思いますmyAccessFile.accdb

SELECT * INTO myTable 
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[YourFile.csv]
于 2012-08-09T15:41:31.483 に答える