我在Netezza中创建了一个表,如下所示:
CREATE TABLE sample
( col1 int,
col2 int,
col3 int,
col4 int )
DISTRIBUTE ON HASH (col1,col2,col3)
ORGANIZE ON (col2);
Run Code Online (Sandbox Code Playgroud)
在创建表之后,我想查询数据库以查找表"在哪个列上组织".由于上表是在"col2"上组织的
我想从netezza将数据导出为CSV。数据由数百万行记录组成。数据应在反逗号内,并且应以^作为分隔符。例如:“ a” ^“ b” ^“ c”
似乎缺乏对执行2个基本约束(唯一和外键)的支持,是失去许多工时调试和解决难题的原因.什么开始是一个简单,易于修复的问题(重复行/不一致的主要细节表)在我们的应用程序中甚至在我们的硬件中都没有被注意到,增长并引发复杂的边缘场景(例如,自我加入与重复可能导致通货膨胀和储存耗尽).
任何人都可以推荐一种方法/工具来避免这些麻烦吗?
如何在Netezza中同时插入多行?我有大约20k的记录要插入,但需要1小时(!)才能将它们全部放入使用单个插入
INSERT INTO MYTABLE VALUES (2, 2, 2, 'E') , (3, 4, 5, 'Z') --doesn't work
Run Code Online (Sandbox Code Playgroud)
这就是我现在正在使用的
INSERT INTO MYTABLE VALUES (2, 2, 2, 'E');
INSERT INTO MYTABLE VALUES (3, 4, 5, 'Z');
...
Run Code Online (Sandbox Code Playgroud) 我试图在一周的时间内随机抽样随机条目。为了确保平日和周末条目的平衡,我草拟了 2 个单独的 sql 语句,如下所示:
select * FROM admin.acct_activity
where RANDOM() <=1
--weekday
and extract(day from page_hit_ts) Between 6 and 10
limit 500
UNION all
SELECT *
FROM admin.acct_activity
where RANDOM() <=1
--weekend
and extract(day from page_hit_ts) Between 11 and 12
limit 200
/* to-do
1. limit results for each query
2. order query results by date*/
Run Code Online (Sandbox Code Playgroud)
错误信息是:
"all" (at char 121) expecting a keyword (State:42000, Native Code: 1B)
Run Code Online (Sandbox Code Playgroud)
这是在 Netezza SQL (NZSQL)
第一个 select 语句中的 limit 语句似乎导致了错误。有小费吗?
是否有可能以某种方式找出从表中删除的行的主键?
同样,是否可以找出表中更新的行的主键?
让我们考虑一个简单的用例:
我有两个时间戳:
给我这两个时间戳之间更新/删除的所有行的主键.
表格中没有任何信息表明它们已经更新.
我发现在调用异步方法时我的C#app UI挂起,我无法弄清楚原因.
private async void selectCSVFileButton_Click(object sender, EventArgs e)
{
...
var results = await ntz.getProductNames();
...
}
...
public async Task<List<string[]>> getProductNames()
{
string fmt = "DRIVER={{NetezzaSQL}};SERVER={0};PORT={1};DATABASE={2};UID={3};PWD={4};";
ntz = new OdbcConnection(string.Format(fmt, server, port, db, user, password));
await ntz.OpenAsync();
qry = "SELECT * FROM ak_db_1 WHERE prod_name_desc='Unknown'";
OdbcCommand cmd = ntz.CreateCommand();
cmd.CommandTimeout = 600;
cmd.CommandText = qry;
await cmd.ExecuteNonQueryAsync();
...
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序完全挂起(UI无响应),直到cmd.ExecuteNonQueryAsync完成.有任何想法吗?
我正在尝试从 Netezza 导出一个大文件(使用 Netezza ODBC + pyodbc),此解决方案会引发 memoryError,如果我在没有“list”的情况下循环,它会非常慢。你知道一个不会杀死我的服务器/python进程但可以运行得更快的中间解决方案吗?
cursorNZ.execute(sql)
archi = open("c:\test.csv", "w")
lista = list(cursorNZ.fetchall())
for fila in lista:
registro = ''
for campo in fila:
campo = str(campo)
registro = registro+str(campo)+";"
registro = registro[:-1]
registro = registro.replace('None','NULL')
registro = registro.replace("'NULL'","NULL")
archi.write(registro+"\n")
Run Code Online (Sandbox Code Playgroud)
- - 编辑 - -
谢谢,我正在尝试:其中“sql”是查询,cursorNZ 是
connMy = pyodbc.connect(DRIVER=.....)
cursorNZ = connNZ.cursor()
chunk = 10 ** 5 # tweak this
chunks = pandas.read_sql(sql, cursorNZ, chunksize=chunk)
with open('C:/test.csv', 'a') as output:
for n, df in enumerate(chunks):
write_header …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Netezza 数据库访问 python 代码中的 unicode(中文、日语等)字符。对于连接,我使用了 Netezza odbc 驱动程序和 sqlalechmy,以及 netezza 中的一个表,其中有一个 nvarchar 类型的列,其中包含中文字符。使用 python 代码访问该汉字时,输出为 ?? 而不是实际数据。
表有两列,一列是数据类型 id,另一列是数据类型 nvarchar:
id(int) Data(nvarchar)
1 ??
2 ??
3 ??
Run Code Online (Sandbox Code Playgroud)
连接代码:
id(int) Data(nvarchar)
1 ??
2 ??
3 ??
Run Code Online (Sandbox Code Playgroud) netezza ×10
sql ×3
python ×2
asynchronous ×1
c# ×1
csv ×1
database ×1
postgresql ×1
pyodbc ×1
shell ×1
sqlalchemy ×1