我正在使用 Spring 3.1.2 和 Hibernate 4.1.5_SP1。我正在尝试将 CSV 文件导入到动态创建的 Access 文件中。代码看起来类似于:
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
我检查了文件,它们不是只读的。关于如何解决这个问题有什么建议吗?
谢谢!
最佳答案
FROM
子句在我看来不正确。
SELECT * INTO myTable
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[myAccessFile.accdb]
我以为您打算从 CSV 导入到 Access 表中。如果是这样,我认为您应该使用 CSV 文件名代替 Access 文件 (myAccessFile.accdb
)。
SELECT * INTO myTable
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[YourFile.csv]
关于java.sql.SQLException : [Microsoft][ODBC Microsoft Access Driver] Cannot update. 数据库或对象是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886479/