私は現在、1500万レコードのデータベースを満たすために値を計算しています。最初の7ミルはちょうど終わりました、しかし今私の更新クエリは問題を出し始めます:今そしてそれからランダムな文字はいくつかのぎこちないものに変わります。Javaでは、次のようにしてクエリを生成します。
String updateSql = "UPDATE VanNaar SET time = CASE ID ";
for (int i = 0; i < routes.size(); i++) {
updateSql += " WHEN " + routes.get(i).ID + " THEN " + routes.get(i).driveTime;
}
updateSql += " END, ";
updateSql += " distance = CASE ID ";
for (int i = 0; i < routes.size(); i++) {
updateSql += " WHEN " + routes.get(i).ID + " THEN " + routes.get(i).distance;
}
updateSql += " END WHERE id IN (";
for (int i = 0; i < routes.size(); i++) {
updateSql += routes.get(i).ID + ",";
}
updateSql = updateSql.substring(0, updateSql.length() - 1);
updateSql += ");";
前に述べたように、これは問題なく機能します。これがJavaが今私に投げかけているものです:
...MySQL server version for the right syntax to use near '×HEN 8284022 THEN 999.999 WHEN 8284023 THEN 3791.0 WHEN 8284024 THEN 378...
または
...MySQL server version for the right syntax to use near 'WÈEN 7468574 THEN 2273.0 WHEN 7468575 THEN 2410.0 WHEN 7468576 THEN 2472.0 W' at line 1
最後の例である奇妙なÃ^またはÃ-に注意してください。大胆なテクストに注意してください。
...MySQL server version for the right syntax to use near **'Â** WHEN 7228125 THEN 48590.0 WHEN 7228126 THEN 47910.0 WHEN 7228127 THEN...
..。
更新:悪化しているようです..:
Unknown column '9°22331' in 'where clause'