我必须构建一个插入查询字符串来创建Prepared Statement。我在Excel文件中有所有列名。
表中有超过250列,创建简单的插入查询需要花费很多时间和精力。我必须对列进行计数,并将?
放在查询中的值字段中。
是否有其他方法可以创建这些查询。
请建议。 在此先感谢
答案 0 :(得分:1)
我可以建议这样做的范例,实现它将是一个更大的问题,但从我可以得出的结论来看,这是一个非常复杂的任务!
您可以使用JXL api读取这些列名,也可以将它们的类型存储在同一个excel文件中(这在准备语句时很有用。)
所以你的excel将是:
Column 1 | Integer
Column 2 | String
Column 3 | Date
等等
JXL将允许您将所有这些内容读入您的java程序,将此信息存储在Map(java.util.HashMap)中,因此此时您将拥有程序中列的名称及其数据类型。
现在,关于创建预备语句。
String allColumnNames ="";
foreach element in the hashmap, allColumnNames+=getKey() + ","
所以此时allColumnNames包含所有列名
分段制作预备陈述:
String statement = "insert into table ("+ allColumnNames +") values " + <250 ? marks here>;
准备好你的陈述。
在此之后,要插入内容,您可以再次遍历hashmap并调用setString或setInt或其他任何内容,具体取决于hashmap的“value”部分。
正如我所说,它是一个漫长而且涉及的过程,但您甚至可以修改此过程,只需在excel文件中设置值,然后将它们直接从excel插入到表中。
答案 1 :(得分:0)
对于快速插入,您可以使用批量准备语句或 COPY FROM (取决于数据库及其驱动程序) - 有关详细信息,请参阅http://rostislav-matl.blogspot.com/2011/08/fast-inserts-to-postgresql-with-jdbc.html。