postgres索引创建、 存储过程的创建以及在c#中的调用
postgres创建索引参考
http://www.cnblogs.com/stephen-liu74/archive/2012/05/09/2298182.html
CREATE TABLE test1 (
id integer,
content varchar
);
CREATE INDEX test1_id_index ON test1 (id);
创建存储过程
CREATE OR REPLACE FUNCTION update_sqs(lng "varchar", lat "varchar", gid "varchar")
RETURNS void
AS
$BODY$
DECLARE
r RECORD;
del bool;
num int4 := 0;
sql "varchar";
BEGIN
sql := 'UPDATE public.sqs_poi SET geocoding_lng = ' || lng || ', geocoding_lat = ' || lat || ' WHERE geoid=' || gid;
execute sql;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
下面是调用的代码
AscMethod方法通过多线程调用
for (int ii = 0; ii < 10; ii++)
{
Thread threadTmp = new Thread(new ParameterizedThreadStart(AscMethod));
threadTmp.Start(ii);
}
public void AscMethod(object i)
{
double s1 = Convert.ToInt32(i)*500000;
double s2 = Convert.ToInt32(i)*500000 + 500000;
string strQuery = "SELECT pr, city, addr, geoid FROM public.sqs_poi WHERE geocoding_lng IS NULL AND geoid >= " + s1.ToString() + " AND geoid < " + s2.ToString() + ";";// LIMIT 500000 OFFSET 0
NpgsqlConnection conn = new NpgsqlConnection("Server=" + Config.host + ";Port=5432;UserId=" + Config.user + ";Password=" + Config.password + ";Database=" + Config.database + ";Preload Reader=true;" + "CommandTimeout=0;ConnectionLifeTime=0;");
// conn.Close();
conn.Open();
NpgsqlCommand SelectCmd = new NpgsqlCommand(strQuery, conn);
NpgsqlDataReader StrReader = SelectCmd.ExecuteReader();
//int line = 1;
while (StrReader.Read())
{
string Address = StrReader["pr"].ToString() + StrReader["city"].ToString() + StrReader["addr"].ToString();
string[] geoString = geocoing(Address);
if (geoString == null)
continue;
try
{
//string updatesql = "UPDATE public.sqs_poi SET geocoding_lng = " + geoString[0] + ", geocoding_lat = " + geoString[1] + "WHERE geoid=" + StrReader["geoid"];
//NpgsqlCommand cmdi = new NpgsqlCommand(updatesql, conn);
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "update_sqs";
NpgsqlParameter p1 = new NpgsqlParameter("lng", DbType.String);
NpgsqlParameter p2 = new NpgsqlParameter("lat", DbType.String);
NpgsqlParameter p3 = new NpgsqlParameter("gid", DbType.String);
p1.Value = geoString[0];
p2.Value = geoString[1];
p3.Value = StrReader["geoid"].ToString();
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
cmd.ExecuteNonQuery();
}
catch (Exception ei)
{
if (conn.State != ConnectionState.Open)//判断数据库是否断开
{
conn.Open();
}
continue;
}
// line++;
}
conn.Close();
}
postgres索引创建、 存储过程的创建以及在c#中的调用的更多相关文章
- 存储过程的参数问题与C#中的调用
1. 带参数的存储过程 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_select_gua] @num ...
- mysql创建存储过程,定时任务,定时删除log
-- 创建存储过程 清除30天前的日志create procedure deleteLog()BEGINdelete from contract_vlog where create_time<D ...
- mysql创建存储过程,批量建表分表00到99
这里以sqlyong为软件示例: --创建存储过程DELIMITER $$ CREATE PROCEDURE `createTablesWithIndex`() BEGIN DECLARE `@i` ...
- SqlServer存储过程的创建与使用
什么是存储过程? T-SQL中的存储过程,非常类似于net语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句. 这样就可以提高存储过程的性能. ...
- mysql 创建存储过程报错
在创建存储过程前把结束符定义为 delimiter // 然后再创建就不会报错
- 利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报 分类: 数 ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...
- SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过
SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过 存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...
随机推荐
- EntityFramework错误:Unable to update the EntitySet because it has a DefiningQuery
错误截图: 解决方法: 在所操作的数据库表中添加一个主键即可解决此问题
- 7 HTML&JS等前端知识系列之jquery的事件绑定
preface 我们知道,每一个a,input等等标签都可以为其绑定一个事件,onclick也好,focus 也罢,都可以绑定的.但是众神key想过这个问题没有,倘若这里有1000个input标签需要 ...
- python学习笔记(一)
• Python能干嘛?[1]科学计算[2]图形化开发[3]系统脚本[4]Web服务器[5]网络爬虫[6]服务器集群自动化运维 • 常用工具:easy_install.pip.ipython.Subl ...
- centos6.5 卸载php
1.删除php,删除之前需要查看php依赖包,使用 rpm -qa|grep php [root@localhost ~]# rpm -qa |grep phpphp55w-mysql-5.5.38- ...
- UP Board USB无线网卡一贴通
前言 原创文章,转载引用务必注明链接,水平有限,欢迎指正. 本文环境:ubilinux 3.0 kernel 4.4.0 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我 ...
- Dubbo项目demo搭建
项目参考: http://dubbo.io/User+Guide-zh.htm https://my.oschina.net/superman158/blog/466637 项目使用 maven+id ...
- 一键批量添加材质的法线贴图-unity插件
有时候材质做完后需要更改贴图,或者增加贴图,数量少的时候可以一张张添加和修改,数量多的时候就只能代码生成了.原理是通过名字的关联:主贴图和法线贴图大多数只是后缀的不同上,如果不是那是美术规范没做好啊, ...
- db2look导出ddl 详细用法(转)
DB2的db2look命令诠释如下:db2look 版本 8.2db2look:生成 DDL 以便重新创建在数据库中定义的对象语法: db2look -d DBname [-e] [-u Creato ...
- linux下如何关闭防火墙?如何查看防火墙当前的状态
从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc/init.d/iptables stop ...
- 【Win10】SplitView控件
SplitView是Win10中的新控件. 用于呈现两部分视图. 一个视图是主要内容,另一个视图是用于导航.(也就是通常说的汉堡菜单.) 主要结构: <SplitView> <Spl ...