交学费,问个关于用psql语句导出数据的问题

liuzuowei007 2009-08-28 02:16:52
我想把服务器上的greenplum数据库的某一张表的数据导出到我本地的一个文本文件(例如test.txt)
COPY命令在服务器上是好用的
但是我想用这个命令将数据导出到我本机时就不好用了
而且我想用jdbc连接数据库 实现导出数据
所以请问一下,这条sql语句要怎么写?
...全文
288 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 vinsonshen 的回复:]
psql -h serverIP -d dcm -U gpadmin -c "select * from public.test_table2;" > d:\temp\test.txt

---------------------------
那说明“> d:\temp\test.txt “这段只能在服务器,在mysql里面这个样式也只能在服务器


所以,建议你的实现目前有2种可行吧:
1、在服务器生成文件,然后下载回本地;
2、程序直接在jdbc里面select 出结果集,然后把这个结果集的数据写进文件(用程序读recordset然后写进文件)。
[/Quote]
这样肯定不可行 数据量大的话程序会跑死的吧。。。
vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
psql -h serverIP -d dcm -U gpadmin -c "select * from public.test_table2;" > d:\temp\test.txt

---------------------------
那说明“> d:\temp\test.txt “这段只能在服务器,在mysql里面这个样式也只能在服务器


所以,建议你的实现目前有2种可行吧:
1、在服务器生成文件,然后下载回本地;
2、程序直接在jdbc里面select 出结果集,然后把这个结果集的数据写进文件(用程序读recordset然后写进文件)。
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 vinsonshen 的回复:]
不应该在jdbc里面调用,应该模拟系统环境(如cmd)来调用就可以了
[/Quote]
在命令行里是可行的
但是在导入的时候文件目录如果写本地的文件的话就会出错。。。
vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
不应该在jdbc里面调用,应该模拟系统环境(如cmd)来调用就可以了
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
psql -h serverIP -d dcm -U gpadmin -c "select * from public.test_table2;" > d:\temp\test.txt

在我本机命令行中输入行语句是可用的
但是这个语句不能在jdbc里调
我想问一下存储过程或者其他语言(C或C++等)能实现在命令行输入上述语句的功能吗?
vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
不过这种遇上大数据量时,很有性能问题(这时建议在服务器上生成文本压缩然后下载回本地)
vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vinsonshen 的回复:]
如果你是想查询结果集的文件,又不想在服务器上生成然后传回本地的话,那你只好直接在程序里处理
select * from tb_name的结果集了
[/Quote]

如果像你这么说,就考虑这么做了
ACMAIN_CHM 2009-08-28
  • 打赏
  • 举报
回复
java 通过打开记录集,然后将生成一个文本文件,再逐记录写入到这个文件中去。
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
我就是想把数据倒出到TXT文本文件
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 acmain_chm 的回复:]
引用客户端是PostgreSQL啊
那要是想用jdbc来从数据库导出是不可行的了?

用JDBC直接用SQL语句不可行。但你可以用JAVA程序把表的内容生成一个TXT文件(CSV)格式的。
[/Quote]
我要的就是这个操作
要怎么写sql呢?
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 vinsonshen 的回复:]
单独备份一个表:
SQL codepg_dump-t tablename mydatabase> outfile
[/Quote]
这个也是针对服务器进行的操作吧
ACMAIN_CHM 2009-08-28
  • 打赏
  • 举报
回复
[Quote]客户端是PostgreSQL啊
那要是想用jdbc来从数据库导出是不可行的了?[/Quote]

用JDBC直接用SQL语句不可行。但你可以用JAVA程序把表的内容生成一个TXT文件(CSV)格式的。
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwb 的回复:]
使用PSQL OR MYSQL?
MYSQL:
selec * from tT into outfile "J://ZZ//test.txt" ;
[/Quote]
是psql
vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
单独备份一个表:
pg_dump -t tablename mydatabase > outfile
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vinsonshen 的回复:]
如果你想的是表数据的对应SQL(即insert那部分语句),则你先在你本地装个mysql,然后通过你的程序调用
mysqldump -hhostname -uroot -ppassword db_name --tables=表名 --no-create-info > "本地路径txt文件"
[/Quote]
这个是mysql的语句吧 不是greenplum的语句吧
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vinsonshen 的回复:]
SQL codeselec*from tb_nameinto outfile "d://test.txt" fields terminatedby',' lines terminatedby'\r\n';
[/Quote]
这条语句不好用啊
我用的是PostgreSQL啊
liuzuowei007 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 acmain_chm 的回复:]
PostgreSQL  中没有这种SQL命令。
你用的是什么客户端?很多软件带有这种功能比如 toad


[/Quote]

客户端是PostgreSQL啊
那要是想用jdbc来从数据库导出是不可行的了?
nianzhang747 2009-08-28
  • 打赏
  • 举报
回复
mysql -u root -p -e "select * from test.B" >D:\1.txt
ACMAIN_CHM 2009-08-28
  • 打赏
  • 举报
回复
PostgreSQL 中没有这种SQL命令。
你用的是什么客户端?很多软件带有这种功能比如 toad

vinsonshen 2009-08-28
  • 打赏
  • 举报
回复
如果你是想查询结果集的文件,又不想在服务器上生成然后传回本地的话,那你只好直接在程序里处理
select * from tb_name的结果集了
加载更多回复(5)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧