我想批量插入大约50000条记录到vertica数据库中。我在我的应用程序中使用了spring JDBC模板,并且我将所有这些sql保存在一个文件中,我知道有一种方法可以通过注入参数来批量插入,比如使用preparedstatement,但是如何通过sql直接批量插入它们呢?
发布于 2021-05-20 01:16:14
发布于 2021-05-20 19:42:43
如果您的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'
https://stackoverflow.com/questions/67605481
复制相似问题