在SQL JDBC中使用特殊字符转义列

时间:2013-06-20 09:20:49

标签: sql csv jdbc

我有一个我要用CsvJdbc驱动程序导入的csv文件。我无法更改csv文件,因为它是从extern程序导出的。

不幸的是,列的名称周围有[],例如[organisation_id]

当我想查询列时,语法错误为[,不支持]个字符。我怎么能逃脱他们?

N.B。我已经尝试\\[organisation_id]\\\[organisation_id\]//[organisation_id//]/[organisation_id/]

2 个答案:

答案 0 :(得分:2)

此问题通过CsvJdbc功能请求#55,“允许双引号列名,列别名,表名”(http://sourceforge.net/p/csvjdbc/feature-requests/55/)解决,它包含在最新的CsvJdbc 1.0-17版中。

包含特殊字符的列名现在可以在SQL语句中与它们周围的双引号一起使用。例如,

SELECT "[organisation_id]", "foo bar", "< 5 seconds" as HELLO FROM sample

这是其他数据库使用的方法,例如PostgreSQL。

答案 1 :(得分:1)

在SQL中使用它们之前,必须删除[]。许多(我所知道的)SQL系统都不支持某些字符。

因此,您不能将列命名为[name]。没有逃避的可能性。您必须将其删除并改为使用name

(请注意,这仅适用于表格和列名称。在列的内容中,您必须在"value with [] is ok"

等文本周围加上引号

经过一些阅读后,我可以说有时允许使用“”来转义列名,因此有时可能允许使用"[organisation_id]"