gpt4 book ai didi

java - 将解析的 CSV 文件插入 SQL Server

转载 作者:行者123 更新时间:2023-12-02 11:26:37 25 4
gpt4 key购买 nike

我正在使用 OpenCSV 库解析 CSV 文件。我设法跳过第一个所需的行,仅选择所需的列并将其打印到控制台。
现在我正在努力将其插入 MSSQL 数据库。
这是我解析文件的代码:

JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter(
"CSV file", "csv");
fileopen.setFileFilter(filter);

int ret = fileopen.showDialog(null, "Choose file");
if (ret == JFileChooser.APPROVE_OPTION) {
CsvParserSettings settings = new CsvParserSettings();

settings.detectFormatAutomatically();
settings.setHeaderExtractionEnabled(true);
settings.selectIndexes(7, 8, 13, 14);
settings.setNumberOfRowsToSkip(9);

List<String[]> rows = new CsvParser(settings).parseAll((fileopen.getSelectedFile()), "UTF-8");
rows.forEach(arr -> System.out.println(Arrays.toString(arr)));

现在代码

INSERT INTO dbo.Glass(Nr_Temp) values(Arrays.toString(rows.get(1)));

是否让我整行而不是列(这是可以理解的:)),但是还有其他解决方案可以返回列值以将它们插入 SQL 数据库吗?

最佳答案

已更新

您需要迭代String[]才能访问列的每个单独值。

PreparedStatement ps = connection.prepareStatement("INSERT INTO dbo.Szyby_temp(nr_zlec_klienta, nr_ref_klienta, szerokosc, wysokosc, ilosc, opis_dodatkowy, data_importu) VALUES(?, ?, ?, ?, ?, ?, getdate())");
int maxBatchSize = 100; //Using batching for performance
int currentBatchSize = 0;
for (String[] row : rows) {
int i = 1;
for (String columnValue : row) {
ps.setString(i++, columnValue); //Parameter indexes start with 1
}
ps.addBatch();
if (++currentBatchSize % maxbatchSize == 0) {
ps.executeUpdate();
}
}
ps.executeUpdate(); //if number of rows in csv file is not divisible by maxbatchSize

关于java - 将解析的 CSV 文件插入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com