小编Bob*_*bby的帖子

在Python中哈希一个整数以匹配Oracle的STANDARD_HASH

在Oracle中,我的数据已通过将整数传递到“ STANDARD_HASH”中进行散列,如下所示。如何使用Python获得相同的哈希值?

将整数传递给STANDARD_HASH时在Oracle中产生结果:

SELECT STANDARD_HASH(123, 'SHA256') FROM DUAL;
# A0740C0829EC3314E5318E1F060266479AA31F8BBBC1868DA42B9E608F52A09F
Run Code Online (Sandbox Code Playgroud)

传入字符串时在Python中产生的结果:

import hashlib

hashlib.sha256(str.encode(str(123))).hexdigest().upper()
# A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3
# I want to modify this function to get the hash value above.
Run Code Online (Sandbox Code Playgroud)

也许这些信息也会有所帮助。我无法在Oracle方面进行任何更改,但如果可以的话,我会将列转换为,CHAR并且其值将与当前的Python实现相同。下面是一个示例。

将字符串传递给STANDARD_HASH时在Oracle中产生结果:

SELECT STANDARD_HASH('123', 'SHA256') FROM DUAL;
# A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3 (matches Python result)
Run Code Online (Sandbox Code Playgroud)

我做了几次尝试,比如简单地将整数传递给Python,但这会导致错误,要求输入字符串。我也一直在寻找一种编码整数的方法,但是没有取得任何进展。

python oracle hash

14
推荐指数
1
解决办法
428
查看次数

R:更改数据框中列的字符编码

我正在调查字符编码如何影响排序.我的问题是:

如何将数据框的单个列更改为不同的字符编码?

对于上下文,我将在底部包含几个额外的步骤.

1)创建数据框:

d.enc <- data.frame( utf8 = c(" ", "_ ", " _"), 
                     mac = c(" ", "_ ", " _"), 
                     label = c("space", "underscore space", "space underscore") )
Run Code Online (Sandbox Code Playgroud)

2)转换为字符向量并尝试设置编码:

d.enc2$utf8 <- as.character(d.enc$utf8)
d.enc2$mac <- as.character(d.enc$mac)
d.enc2$label <- as.character(d.enc$label)

Encoding(d.enc2$utf8) <- "UTF-8"
Encoding(d.enc2$mac) <- "MACINTOSH"
Encoding(d.enc2$utf8)
# [1] "unknown" "unknown" "unknown"
Encoding(d.enc2$mac)
# [1] "unknown" "unknown" "unknown"
Run Code Online (Sandbox Code Playgroud)

3)那不是我所希望的.我原以为:

# [1] "UTF-8" "UTF-8" "UTF-8" and
# [1] "MACINTOSH" "MACINTOSH" "MACINTOSH"
Run Code Online (Sandbox Code Playgroud)

4)我支持我想要的编码吗?(在mac上运行)

temp <- iconvlist()
temp[399]
# [1] "UTF-8"
temp[338] …
Run Code Online (Sandbox Code Playgroud)

encoding r utf-8 character-encoding iconv

6
推荐指数
1
解决办法
3843
查看次数

用原始表名为由 left_join() 产生的所有列添加前缀

我想为由左连接产生的所有列添加前缀。

left_join()当被连接的两个表之间的名称相同时,可以添加后缀。但是,即使它们的名称不同,它也没有始终添加此后缀的选项。并且它没有选项来代替添加前缀。

library(dplyr)
library(nycflights13)
flights2 <- flights %>% select(year:day, hour, origin, dest, tailnum, carrier)
airports2 <- airports

result <- flights2 %>% left_join(airports2, c("dest" = "faa")) %>% head()
Run Code Online (Sandbox Code Playgroud)

结果:

Source: local data frame [6 x 14]

year month   day  hour origin  dest tailnum carrier                            name
(int) (int) (int) (dbl)  (chr) (chr)   (chr)   (chr)                           (chr)
1  2013     1     1     5    EWR   IAH  N14228      UA    George Bush Intercontinental
2  2013     1     1     5    LGA   IAH  N24211      UA    George Bush Intercontinental
3  2013 …
Run Code Online (Sandbox Code Playgroud)

join r relational-database dplyr

6
推荐指数
1
解决办法
7121
查看次数

自动生成命令以重现工作空间中的对象

假设在工作空间中已经定义了一个对象:

a <- round( rnorm(10) )

[1]  0 -1 -1 -1 -1  0  2  1  1  1
Run Code Online (Sandbox Code Playgroud)

如何以编程方式生成创建的命令a

例如,我想a在我的工作空间中使用生成以下字符串codeToCreateA

codeToCreateA <- "a <- c( 0, -1, -1, -1, -1,  0,  2,  1,  1,  1)"
Run Code Online (Sandbox Code Playgroud)

我对一般情况感兴趣,在这种情况下a可以是任何类别的对象,包括矢量,列表或数据框。

r

5
推荐指数
1
解决办法
296
查看次数

代码重构:从$到[[

我有很多代码使用$运算符而不是[[.我已经阅读了许多优点,[[并希望重构所有代码.

以下方法会有任何问题吗?我怎样才能最好地在Mac上进行搜索并替换为RStudio或TextWrangler?

l <- list()
l$`__a` <- data.frame(`__ID` = stringi::stri_rand_strings(10, 1), col = stringi::stri_rand_strings(10, 1), check.names = F )
Run Code Online (Sandbox Code Playgroud)

代码现在看起来像这样:

l$`__a`$`__ID`
Run Code Online (Sandbox Code Playgroud)

我想重构它:

l[["__a"]][["__ID"]]
Run Code Online (Sandbox Code Playgroud)

为实现这一目标,以下替代品是否足够?

$` to [["

` to "]]
Run Code Online (Sandbox Code Playgroud)

我在我的代码中找到了一个区域,这个方法不起作用,现在我也找到了一个解决方法来避免这个问题:用dplyr避免反引号字符

df <- dat[["__Table"]] %>% select(`__ID` ) %>% mutate(fk_table = "__Table", val = 1)
Run Code Online (Sandbox Code Playgroud)

在进行上面的替换之前,我需要将select函数更改为this以避免错误替换反引号字符:

select_(as.name("__ID"))
Run Code Online (Sandbox Code Playgroud)

遗憾的是,__由于数据是从关系数据库(FileMaker)下载的,并且需要在保留列名的同时将数据写回数据库,因此无法避免使用in列名.

参考文献[[:

关于R中的重构的参考:

textwrangler filemaker r list rstudio

5
推荐指数
1
解决办法
234
查看次数

在R中生成UUID向量的更快方法

下面的代码大约需要15秒才能生成10k UUID的向量。我将需要生成1M或更多,并且我估计这将花费15 * 10 * 10/60分钟,或大约25分钟。有没有更快的方法来实现这一目标?

library(uuid)
library(dplyr)
start_time <- Sys.time()
temp <- sapply( seq_along(1:10000), UUIDgenerate )
end_time <- Sys.time()
end_time - start_time  

# Time difference of 15.072 secs
Run Code Online (Sandbox Code Playgroud)

本质上,我正在寻找一种R的方法,该方法设法实现此处所述的Java性能提升:Java 7或Java 6生成随机UUID的性能

它们应符合RFC 4122,但其他要求很灵活。

uuid r

3
推荐指数
1
解决办法
691
查看次数

SQL Developer 中脚本完成后的通知

我对任何在该脚本完成执行后通知我的方法感兴趣。它正在从一个数据库完全加载到另一个数据库,每次执行时都会加载一个月的数据。完成后,我需要在更新控制表以加载下个月后再次启动它。由于数据量和可用 Oracle 资源的变化,执行时间差异很大,因此简单地设置计时器会导致不必要的检查或损失潜在的加载时间。

BEGIN
  PKG_PACKAGENAME.PROCEDURENAME;  
END;
Run Code Online (Sandbox Code Playgroud)

这些是我的想法,但我不知道在没有重大外部依赖的情况下实际上可以实现什么。目前优先选择最简单的方法。如果可以在安全的企业环境中运行,任何类似的东西也可能没问题。我不想修改包或过程内容。

  • 发出声音通知
  • 将 SQL Developer 窗口置于最前面
  • 执行启动 IFTTT 应用程序的 http 请求以发送推送通知
  • 运行一个执行http请求的python脚本

oracle windows-7-x64 oracle-sqldeveloper

1
推荐指数
1
解决办法
1592
查看次数