У меня есть CSV-файл, который имеет почти 10 тыс. Записей и в котором нет поля, подобного дате, но когда я сохраняю CSV-файл в БД, эта созданная дата должна быть вставлена в ту же таблицу. Код, который я написал, показан ниже.
public void insertData(final InputStream inputStream, final String originalFilename, final User user)
throws ServiceException {
LOGGER.entry("FileName", originalFilename, "LoggedinUser", user.getName());
final File file = new File(originalFilename);
if (originalFilename.endsWith(.csv)) //to check csv notation {
try {
final BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
int rowcount = 0;
String line = "";
while ((line = bufReader.readLine()) != null) {
if (rowcount == 0) {
rowcount++;
continue;
}
writer.write(line);
writer.newLine();
rowcount++;
}
bufReader.close();
writer.close();
try {
DataDAO.insertDataFromCSV(file, "Data"); //method to insert into DB
} catch (DAOException dexc) {
final String errorMsg = "Exception while processing DAO call to save imported CSV File";
LOGGER.error(errorMsg, dexc);
throw new ServiceException(errorMsg, dexc);
}
} catch (IOException ioe) {
final String errorMsg = "Exception while reading from the file or writing to the file";
LOGGER.error(errorMsg, ioe);
}
}
}
DataDao.insertDataFromCsv
public void insertEnrichmentDataFromCSV(final File file, final String type)
throws DAOException {
LOGGER.entry();
try {
LOGGER.info("Batch insertion of " + type + " into database from
file : " + file.getAbsolutePath());
final StringBuffer loadQuery = new StringBuffer(DAOConstants.QUERY_START +
file.getPath());
if ("Data".equalsIgnoreCase(type)) {
loadQuery.append(DAOConstants.DATA_QUERY_START +
DAOConstants.DATA_QUERY);
}
this.getNamedParameterJdbcTemplate().getJdbcOperations().
execute(loadQuery.toString());
LOGGER.info("Successfully inserted " + enrichmentType + " in to DB ");
} catch (DataAccessException exception) {
final String errorMessage = "Exception while performing batch insertion of "
+ enrichmentType + " into database";
LOGGER.error(errorMessage, exception);
throw new DAOException(errorMessage, exception);
}
LOGGER.exit();
}
DAOConstants.Java
public final class DAOConstants {
public static final String QUERY_START = "LOAD DATA LOCAL INFILE '";
public static final String PUPPET_QUERY = " LINES TERMINATED BY '\n' (pe_group,data_master,pe_environment,cert_name,host_name,serial_number,iptables_status,kernel,product_name,project,department,cluster_name,architecture,citrix_version,dcenv,iis_version,is_virtual,operating_system,operating_system_maj_release,physical_processor_count,processor_count,postgres_default_version,role,sql_version,websphere_profiles,websphere_version,was,dotnet_latest_version,firefox_version,httpd_status,oracle,sybase,mq,mysql,mysql_version,jboss_version,java_version,data_master_url,httpd_process,apache_version,created_by)";
public static final String PUPPET_QUERY_START = "' INTO TABLE puppet_data
FIELDS TERMINATED BY ','";
private DAOConstants() {
}
}
Это мой код для хранения CSV-файла в БД. Может, кто-нибудь подскажет, как добавить insertdate в каждую строку таблицы Ex: мои данные CSV - это a, b, c, но когда я сохраняю вБД должен хранить в качестве даты abc для каждой записи, так что кто-нибудь может предложить мне