所以基本上我是使我的程序通过一个控制台为基础的菜单,是吗?这是一个数据库管理器,它的操作回答与数字(你知道,输入'1'输入一个记录,输入'2'输出记录,等等)。所以没有不同的方式来搞乱参数,在这里。但它似乎不工作无论如何?这里是我的代码,之后我会告诉你我尝试了什么。
public void loadCSV(String table, String filename) {
String query;
try (Statement st = con.createStatement()) {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/DrSoheirManager", "root", "ITGS!!!");
st = con.createStatement();
query = "load data local infile '/Users/****/NetBeansProjects/IA Draft 3/" +
filename + "' ignore into table " + table + " columns terminated
by ',' \n" + " lines terminated by '\\n'";
/* load data local infile '/users/****/netbeansprojects/ia draft
3/patients.csv' ignore into table */
st.execute(query);
} catch (Exception e) {
e.printStackTrace();
st = null;
}
}
那么这个方法应该怎么用呢,基本上就是:加载CSV(“患者”,患者.csv);其中patients是我想输入值的表的名称,patients.csv是我想输入值的源。这是我第一次使用JDBC,所以我不熟悉所涉及的方法,但我尝试过将st.execute(query)替换为st.executeQuery()和st.executeUpdate(),之前我得到了一个错误,但改变了SQL查询位似乎已经修复了。现在我没有得到一个错误,但信息只是没有被添加到数据库。
ps:我使用了'ignore'函数,因为我希望能够导入到数据库而不添加重复项。我是否正确地执行了此操作?
如果我发布这篇文章违反了任何规则,请让我知道,这样我就可以修复我的错误。提前感谢:)
编辑:我的架构:
和样本数据集:
CREATE TABLE IF NOT EXISTS `Patients` (
`ID` int(11) NOT NULL,
`fname` text NOT NULL,
`lname` text NOT NULL,
`Diagnosis` text NOT NULL,
`phone` varchar(15) NOT NULL,
`email` varchar(25) NOT NULL,
`DOB` date NOT NULL,
`DOFV` date NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `Patients` (`ID`, `fname`, `lname`, `Diagnosis`, `phone`, `email`, `DOB`, `DOFV`) VALUES
(1, 'hanalei', 'ezz', 'hemophelia', '+1(919)929-6567', 'hana@hanalei.me', '1998-08-22', '2008-03-12'),
(2, 'monika', 'zanesco', 'sickle cell disease', '+1(919)939-4264', 'monika.z@gmail.com', '1998-10-05', '2016-04-13'),
(3, 'bang', 'pham', 'leukemia', '+1(919)243-8937', 'bangp@aol.com', '1998-03-15', '2013-03-03');
2条答案
按热度按时间jrcvhitl1#
用于从MySQL Workbench提供的insert语句生成文本文件的代码片段:
样本CSV:
截断后,数据加载正常(注:目前在我的Windows盒子上测试)。所以,在文件名或表名的字符串中乱来任何你需要做的特殊concat。
w3nuxt5m2#
您还可以使用csv2jdbc轻松地跨csv文件和表导入和导出数据,无论您使用的是哪种数据库:
将CSV文件从客户端计算机导入数据库表
以下语句将创建表
MY_TABLE
,其中所有列都存在于file.csv
中,然后将数据导入到该表中。将Select语句导出到CSV文件
以下语句将select语句提取到
file.csv