有没有一种方法可以在JAVA中使用dd-MM-yyy格式的日期列来复制SQLServerBulkCSVFileRecord的SQLServerBulkCopy?
我正在尝试从CSV文件批量插入SQL Server DB。 如果日期格式为yyyy-MM-dd,则整个代码工作正常 但是如果格式更改为dd-MM-yyyy,则会出现异常:线程“main”com.microsoft.sqlserver.jdbc.SQLServerException中的异常:将varchar数据类型转换为datetime数据类型导致值超出范围有没有一种方法可以在JAVA中使用dd-MM-yyy格式的日期列来复制SQLServerBulkCSVFileRecord的SQLServerBulkCopy?,java,sql-server,date,sql-server-2012,sqlbulkcopy,Java,Sql Server,Date,Sql Server 2012,Sqlbulkcopy,我正在尝试从CSV文件批量插入SQL Server DB。 如果日期格式为yyyy-MM-dd,则整个代码工作正常 但是如果格式更改为dd-MM-yyyy,则会出现异常:线程“main”com.microsoft.sqlserver.jdbc.SQLServerException中的异常:将varchar数据类型转换为datetime数据类型导致值超出范围 CSV文件Test.CSV的内容包括: ABC,20-11-2009 DEF,15-10-1993 我如何解决这个问题 String c
CSV文件Test.CSV的内容包括: ABC,20-11-2009 DEF,15-10-1993 我如何解决这个问题
String connectionString = "jdbc:sqlserver://abc.com:1433;databaseName=DATA";
String userName = "SG";
String password = "Welcome123";
String driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(driverClassName);
Connection conn =
DriverManager.getConnection(connectionString,userName,password);
String createTempQuery = "CREATE TABLE CHECK_BCP_DATE1("+
"ORIG_CLIV_STRING varchar(100),"+
"CLIV_DATE DATETIME)";
PreparedStatement createTempTable = conn.prepareStatement(createTempQuery);
createTempTable.execute();
File file = new File("C:\\Users\\sandipan.ghosh\\Desktop\\Test.csv");
ByteArrayInputStream derivedCsvStream = new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
SQLServerBulkCopy bulkCopy=null;
bulkCopy = new SQLServerBulkCopy(conn);
SQLServerBulkCopyOptions bcpOptions = new SQLServerBulkCopyOptions();
bcpOptions.setKeepNulls(true);
bulkCopy.setBulkCopyOptions(bcpOptions);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
SQLServerBulkCSVFileRecord fileRecord = new SQLServerBulkCSVFileRecord(derivedCsvStream, null, ",", false);
fileRecord.addColumnMetadata(1, "ORIG_CLIV_STRING", java.sql.Types.VARCHAR, 100, 0);
fileRecord.addColumnMetadata(2, "CLIV_DATE", java.sql.Types.DATE, 0, 0, dateTimeFormatter);
bulkCopy.setDestinationTableName("CHECK_BCP_DATE1");
bulkCopy.writeToServer(fileRecord);