Java Экспорт SQL-запросов в CSV ведущие нули и усечение числа - PullRequest
0 голосов
/ 15 декабря 2011

Я экспортирую результаты запроса SQL, где все поля являются строками varchar. Такие поля, как серийные номера, которые могут содержать или не содержать буквы, номера зданий и номера комнат, должны содержать все свои символы, чтобы их можно было использовать в отчете. Например, серийный номер 0129306201100910 усекается до 1.29306E + 14 , что делает его бесполезным. Вот код, который я использую для фактического написания экспорта. Любые предложения о том, как изменить это, чтобы сохранить ведущие нули и остановить усечение научной нотации? Заранее спасибо.

wr.write("\"Inventory_No\",\"Building_No\",\"Actual_Building\",\"Room_No\",\"Actual_Room\",\"CDDEPT\",\"Location\",\"Actual_Location\",\"Normalized_MFG\""
                        + ",\"Manufacturer\",\"Normalized_Model\",\"Model\",\"Serial Code\""
                        + ",\"Cost\",\"Account_No\",\"Active\"");
                wr.newLine();
                int count = 0;
                while (rs.next()) {
                    count += 1;
                    if (count % 1000 == 0) {
                        wr.flush();
                        response.flushBuffer();
                    }
                    wr.write("\"" + rs.getString("Inventory_No") + "\",");
                    wr.write("\"" + rs.getString("Building_No") + "\",");
                    wr.write("\"" + rs.getString("Actual_Building") + "\",");
                    wr.write("\"" + rs.getString("Room_No") + "\",");
                    wr.write("\"" + rs.getString("Actual_Room") + "\",");
                    wr.write("\"" + rs.getString("CDDEPT") + "\",");
                    wr.write("\"" + rs.getString("Location") + "\",");
                    wr.write("\"" + rs.getString("Actual_Location") + "\",");
                    wr.write("\"" + rs.getString("Normalized_MFG") + "\",");
                    wr.write("\"" + rs.getString("Manufacturer_Name") + "\",");
                    wr.write("\"" + rs.getString("Normalized_Model") + "\",");
                    wr.write("\"" + rs.getString("Name") + "\",");
                    wr.write("\"" + rs.getString("Serial_Code") + "\",");
                    wr.write("\"" + rs.getString("Cost") + "\",");
                    wr.write("\"" + rs.getString("Account_No") + "\",");
                    wr.write("\"" + rs.getString("Active") + "\",");
                    wr.newLine();
                }

Ответы [ 3 ]

0 голосов
/ 15 декабря 2011

MySQL имеет функцию для создания своего собственного файла CSV. Как это:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM test_table; 

Таким образом, вы можете установить с помощью своих собственных функций SQL подходящие значения для экспорта в CSV. И скачать этот файл на сервер.

Документация для этой операции доступна по адресу SELECT MySQL

Надеюсь, что эта помощь

0 голосов
/ 16 декабря 2011

Я предлагаю использовать такую ​​библиотеку, как Super CSV

0 голосов
/ 15 декабря 2011

Убедитесь, что ваш csv-писатель форматирует ячейку как «Текст», которая запишет ее как текст, отключающий научную запись.

В случае, если вы дважды щелкнете по ячейке, вы должны увидеть полное значение с текущим кодом..

...