【发布时间】:2021-05-19 14:41:40
【问题描述】:
我想将大约 5 万条记录批量插入到 vertica 数据库中。我在我的应用程序中使用spring JDBC模板,并且我将所有这些sqls保存在一个文件中,我知道有一种方法可以通过注入参数来批量插入,例如使用preparedstatement,但是如何直接通过sqls批量插入它们?
【问题讨论】:
标签: spring-boot spring-data-jpa spring-data jdbctemplate vertica
我想将大约 5 万条记录批量插入到 vertica 数据库中。我在我的应用程序中使用spring JDBC模板,并且我将所有这些sqls保存在一个文件中,我知道有一种方法可以通过注入参数来批量插入,例如使用preparedstatement,但是如何直接通过sqls批量插入它们?
【问题讨论】:
标签: spring-boot spring-data-jpa spring-data jdbctemplate vertica
你好小宇这是我的简单示例项目我正在使用这个项目 jdbctemplate 和 sql 查询
【讨论】:
如果您的 SQL 语句如下所示:
INSERT INTO test VALUES ( 1,'Arthur','Dent', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 2,'Ford','Prefect', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 3,'Zaphod','Beeblebrox', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 4,'Tricia','McMillan', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 5,'Gag','Halfrunt', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 6,'Prostetnic Vogon','Jeltz',TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 7,'Lionel','Prosser', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 8,'Benji','Mouse', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES ( 9,'Frankie','Mouse', TIMESTAMP '2017-02-05 00:00:00');
INSERT INTO test VALUES (10,'Svlad','Cjelli', TIMESTAMP '2017-02-05 00:00:00');
并且文件名为test.sql,您可以搜索替换该文件中不需要的所有内容,使其成为加载文件。
$ perl -pe 's/INSERT INTO test VALUES \(//; s/TIMESTAMP //; s/\);//;' test.sql >test.csv
然后,触发 Sql 命令:
COPY test FROM LOCAL 'test.csv' DELIMITER ',' ENCLOSED BY '''' REJECTMAX 5 EXCEPTIONS '/dev/tty';
-- in Windows: EXCEPTIONS 'NUL'
【讨论】: