在MySQL中,可以使用LOAD DATA INFILE和LOAD DATA LOCAL INFILE两种方式导入文本文件中的数据到数据库表中,速度非常快。其中LOAD DATA INFILE使用的文件要位于MySQL所在服务器上,LOAD DATA LOCAL INFILE则使用的是客户端的文件。
LOAD DATA INFILE 'data.txt' INTO TABLE table_name;
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE table_name;
在PostgreSQL中也可以导入相同类型的文本文件,使用的是COPY命令:
COPY table_name FROM 'data.txt';
但是这个语句只能导入PostgreSQL所在服务器上的文件,要想导入客户端文件,就需要使用下面的语句:
COPY table_name FROM STDIN;
在Java中,可以通过设置流的方式,设置需要导入的客户端本地文件。
public void copyFromFile(Connection connection, String filePath, String tableName)
throws SQLException, IOException {
FileInputStream fileInputStream = null;
try {
CopyManager copyManager = new CopyManager((BaseConnection)connection);
fileInputStream = new FileInputStream(filePath);
copyManager.copyIn("COPY " + tableName + " FROM STDIN", fileInputStream);
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
另外,还可以使用COPY table_name TO STDOUT来导出数据文件到本地,和上面的导入相反,可以用于数据库备份。此外,还支持导出一个SQL查询结果:
COPY (SELECT columns FROM table_name WHERE ……) TO STDOUT;
Java代码如下:
public void copyToFile(Connection connection, String filePath, String tableOrQuery)
throws SQLException, IOException {
FileOutputStream fileOutputStream = null;
try {
CopyManager copyManager = new CopyManager((BaseConnection)connection);
fileOutputStream = new FileOutputStream(filePath);
copyManager.copyOut("COPY " + tableOrQuery + " TO STDOUT", fileOutputStream);
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用方式:
// 将本地d:/data.txt文件中的数据导入到person_info表中
copyFromFile(connection, "d:/data.txt", "person_info");
// 将person_info中的数据导出到本地文件d:/data.txt
copyToFile(connection, "d:/data.txt", "person_info");
// 将SELECT p_name,p_age FROM person_info查询结果导出到本地文件d:/data.txt
copyToFile(connection, "d:/data.txt", "(SELECT p_name,p_age FROM person_info)");
作者:叉叉哥 转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/12090341
分享到:
相关推荐
Maven坐标:org.postgresql:postgresql:42.3.1; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...
Maven坐标:org.postgresql:postgresql:42.2.5; 标签:postgresql、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...
ext-postgresql是Swoole Postgres客户端库,可以在协程环境中使用而不会阻塞。 前提条件 libpq是必需的 swoole版本> = 4.4.0 建造与安装 git clone git@github.com:swoole/ext-postgresql.git phpize ./configure ...
ArcGIS连接Postgresql需要的32位客户端文件; libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll 和 ssleay32.dll。
Maven坐标:org.postgresql:postgresql:42.2.2; 标签:postgresql、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...
开源数据库PostgreSQL,动物园出的教材,值得推荐,值得品味,
PgBulkInsert是一个Java库,用于使用Binary COPY协议批量插入PostgreSQL。 它提供了PostgreSQL 的包装器: 是PostgreSQL特有的功能,它允许高效地批量导入表或从表导出数据。 与使用INSERT和SELECT相比,这是将...
PostgreSQL社区于2020年10月17日发布JDBC紧急修复版本v42.2.18。该版本主要修复了42.2.17版本中并未完全修复的gssEncMode问题。
ArcGIS连接Postgresql需要的32位客户端文件; libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll 和 ssleay32.dll。
ArcGIS连接Postgresql需要的5个32位客户端文件; libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll 和 ssleay32.dll。
postgresql-42.6.0.jar 对 java 8的支持postgresql驱动包
PostgreSQL PostgreSQL客户端支持文本查询和图形数据库浏览器执行的PostgreSQL客户端。
POSTgreSQL:51风控系统背后的利器_
java-postgresql Java中的Postgresql项目
Maven坐标:org.postgresql:postgresql:42.2.6; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...
postgresql-pure:使用纯Haskell实现的PostgreSQL客户端库
mac os sierra 下 postgresql mysql 数据库 GUI 图形化 客户端
POSTgreSQL:51风控系统背后的利器_张泽鹏@51信用卡.pdf
PostgreSQL客户端软件,Navicat的产品,比较简洁和方便
Maven坐标:org.postgresql:postgresql:42.3.3; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...