我的表中有重复的行,我想以最有效的方式删除重复项,因为表很大.经过一番研究,我得出了这个问题:
WITH TempEmp AS
(
SELECT name, ROW_NUMBER() OVER(PARTITION by name, address, zipcode ORDER BY name) AS duplicateRecCount
FROM mytable
)
-- Now Delete Duplicate Records
DELETE FROM TempEmp
WHERE duplicateRecCount > 1;
Run Code Online (Sandbox Code Playgroud)
但它只适用于SQL,而不适用于Netezza.它似乎不喜欢DELETE
后面的WITH
条款?
我正在将Python代码转换为新的基于SQLAlchemy的Pandas 0.14.1.
我们使用的常见模式是(通用):
connection = db.connect() # open connection/session
sql = 'CREATE TEMP TABLE table1 AS SELECT ...'
connection.execute(sql)
... other sql that creates TEMP tables from various joins of previous TEMP tables ...
sql = 'CREATE TEMP TABLE tableN AS SELECT ...'
connection.execute(sql)
result = connection.query('SELECT * FROM tableN WHERE ...')
connection.close()
Run Code Online (Sandbox Code Playgroud)
现在,一旦连接关闭,TEMP表就会被DB服务器清除.但是,由于最终的选择查询使用相同的连接/会话,因此它可以访问表.
如何使用SQLAlchemy和pd.read_sql_query()实现类似?
例如:
engine = sqlalchemy.create_engine('netezza://@mydsn')
connection = engine.connect()
sql = 'CREATE TEMP TABLE tmptable AS SELECT ...'
connection.execute(sql)
result = pd.read_sql_query('SELECT * FROM tmptable WHERE ...', …
Run Code Online (Sandbox Code Playgroud) 所以.这个问题与这里讨论的问题几乎完全相同- 但是该帖子中讨论的修复(例如它)并不能解决问题.
我正在尝试使用Python 2.7.5和pyodbc 3.0.7从Ubuntu 12.04 64位机器连接到IBM Netezza数据库.我正在使用unixODBC来处理指定DSN.这个DSN在isql
CLI中工作得非常好- 所以我知道它配置正确,unixODBC正在顺利进行.
代码目前很简单,并且很容易在REPL中重现:
In [1]: import pyodbc
In [2]: conn = pyodbc.connect(dsn='NZSQL')
In [3]: curs = conn.cursor()
In [4]: curs.execute("SELECT * FROM DB..FOO ORDER BY created_on DESC LIMIT 10")
Out[4]: <pyodbc.Cursor at 0x1a70ab0>
In [5]: curs.fetchall()
---------------------------------------------------------------------------
InvalidOperation Traceback (most recent call last)
<ipython-input-5-ad813e4432e9> in <module>()
----> 1 curs.fetchall()
/usr/lib/python2.7/decimal.pyc in __new__(cls, value, context)
546 context = getcontext()
547 return context._raise_error(ConversionSyntax,
--> 548 "Invalid literal for Decimal: %r" % …
Run Code Online (Sandbox Code Playgroud) 我建立了一个ODBC连接到Netezza(SQL数据库).连接很好.但是,R默认只拉出256行,并限制它可以拉出的行数.
如果我在Netezza中运行查询,它将返回总行数(300k).我期待R中的行数相同.但是,它只返回256行,相差300k.
我正在使用NetezzaSQL版本7.00.02 NSQLODBC.DLL的驱动程序
我试图在控制面板>管理工具>数据源(OBBC)>系统DNS的"驱动程序选项"中将预取计数更改为零
它没用.有任何想法吗?
在Netezza,如果我这样做:
SELECT
*
FROM Tbl order by col1
LIMIT 10 OFFSET 20;
Run Code Online (Sandbox Code Playgroud)
首先,什么是OFFSET 20.而且,这会给我订单中指定的前10行或者是否会选择随机10行后的订单?我希望按照我的订单中的指定选择表格的前10行.
我想运行一个基本查询,但只从Netezza返回表的前十行
select a.*
from some_schema.some_table a
where rownum < 10
Run Code Online (Sandbox Code Playgroud)
Netezza只关注那几排的方式是什么?
想了解是否Netezza
或者Hadoop
是用于以下目的的正确选择:
从多个相当大的在线资源中提取饲料文件的时间超过GB.
清理,过滤,转换和计算来自Feed的更多信息.
生成不同维度的指标,类似于数据仓库多维数据集的工作方式,以及
使用SQL或任何其他标准机制帮助Web应用程序更快地访问最终数据/指标.
这是我的查询在Netezza中不起作用:
UPDATE TABLE1 A
SET A.COL1= (SELECT DISTINCT B.COL1 FROM TABLE2 B WHERE B.ID= A.ID AND B.DeptID=104)
WHERE A.DeptID=3
Run Code Online (Sandbox Code Playgroud)
如何重新编写此查询?请帮忙.
netezza ×10
sql ×5
odbc ×2
ansi-sql ×1
database ×1
duplicates ×1
hadoop ×1
pandas ×1
postgresql ×1
pyodbc ×1
python ×1
python-2.7 ×1
r ×1
sqlalchemy ×1