- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将数据从 linux 文件(包含重复项,并且数据从源表中卸载)加载到表中。
mylinux file properties:
$ file -bi myfile_I.out
application/octet-stream; charset=binary
在将数据加载到表之前。我应该从 linux 文件中删除重复项。
我删除重复项的方法:
我在第 2 步遇到问题{无法从 TempEX.out 文件中删除完整的重复项}
#------------------------------------------------------------------#
#- Delete the duplicates from TempEX.out write the unique data-----#
#------------------to myfile_I.out----------------------------------#
echo -e "Eliminate the duplicates from the ${FILE_PATH}/TempEX.out
file" >> ${LOG}
sort -u ${FILE_PATH}/TempEX.out > ${DEST_PATH}/myfile_I.out
echo -e "Unique records successfully written into
${DEST_PATH}/myfile_I.out" >> ${LOG}
count=0
while read
do
((count=$count+1))
done <${DEST_PATH}/myfile_I.out
echo -e "Total No of unique records in ${DEST_PATH}/myfile_I.out:"
${count} "\n" >> $LOG
#-----------------------------------------------------------------#
实际结果:
Counts:
$wc -l TempEX.out myfile_I.out
196466 TempEX.out -->#File Contains duplicate records#
196460 myfile_I.out-->#Unique records after my approach(sort -u)#
392926 total
我做了一些排序函数来了解 myfile_I.out 中存在的重复项TempEX.out 文件中的重复记录数
$ cut -d'^X' -f1,6,10 TempEX.out|sort|uniq -d|wc -l
5
myfile_I.out 文件中的重复记录数
$ cut -d'^X' -f1,6,10 myfile_I.out|sort|uniq -d|wc -l
1
在 TempEX.out 文件中得到哪些记录(在 primary_key 上)有重复
$ cut -d'^X' -f1,6,10 TempEX.out|sort|uniq -d|cat
701234567 412345678 19
701234568 412345677 18
709875641 412345859 17
701234569 425984031 21
701234570 409845216 20
在 myfile_I.out 文件中得到哪些记录(在 primary_key 上)有重复
$ cut -d'^X' -f1,6,10 myfile_I.out|sort|uniq -d|cat
709875641 412345859 17
预期结果:要从 TempEX.out 文件中消除重复项,请将唯一数据加载到 myfile_I.out。
sort -u TempEX.out > myfile_I.out /*cant resolving the issue*/
我们可以做这样的事情吗?(在主键上执行)
sort -u -f1,6,10 TempEX.out > myfile_I.out
最佳答案
这是一个可能有用的小脚本。它不会用新数据修改原始文件,而是创建一个新文件进行加载(我总是喜欢保留原始文件以防出错)。它正在对主键进行验证,但会确保在主键重复的情况下其他列也相同。合理的是,即使您不提及它,也可能会修改现有数据或输入系统中的错误。无论如何,脚本会将这些行发送到不同的文件中以供用户查看。
它写在评论中,但只是为了确定,任何列中的任何字段都不应具有带空格的值。
#!/bin/ksh
TIMESTAMP=$(date +"%Y%m%d%H%M")
#No sense to do anything if the files are not readable.
if [[ ! -r $1 || ! -r $2 ]]; then
print "ERROR - You must provide 2 parameters : 1 = path/filename of DB content 2 = path/filename of New Data"
exit
fi
#Declaring 2 associative matrix
typeset -A TableDB
typeset -A DataToAdd
#Opening the different files. 3 and 4 for reading and 5 and 6 for writting.
#File handlers :
# 3 for the data from the DB,
# 4 for the new data to add,
# 5 to write the new data to load (unique and new),
# 6 to write the data in problem (same primary key but with different values)
exec 3<$1
exec 4<$2
exec 5>Data2Load_${TIMESTAMP}.txt
exec 6>Data2Verify_${TIMESTAMP}.txt
#Loading the 2 matrix with their data.
#Here it is assumed that no field in any column contain blank spaces.
#Working with only 3 columns as in the example
while read -u3 a b c && read -u4 d e f; do
TableDB[$a]=( $a $b $c )
DataToAdd[$d]=( $d $e $f )
done
#Checking for duplicate and writting only the new one to load without the lines in possible errors
for i in ${!DataToAdd[@]}; do
if [[ -z ${TableDB[$i]} ]]; then
print -u5 "${DataToAdd[$i][0]} ${DataToAdd[$i][1]} ${DataToAdd[$i][2]}"
elif [[ ${DataToAdd[$i][1]} != ${TableDB[$i][1]} || ${DataToAdd[$i][2]} != ${TableDB[$i][2]} ]]; then
print -u6 "${DataToAdd[$i][0]} ${DataToAdd[$i][1]} ${DataToAdd[$i][2]}"
fi
done
#closing the different files
exec 3>&-
exec 4>&-
exec 5>&-
exec 6>&-
希望对您有所帮助!
关于linux - 如何从Linux文件中的分隔文件中消除重复记录(myfile_I.out : application/octet-stream; charset=binary),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56667966/
我正在使用 python Azure sdk。当文件上传时,其内容类型更改为 application/octet-stream。 我想设置其默认内容类型,例如 PNG 图像的 image/png。 我
我在计算字符串长度时遇到问题。我有以下字符串: 30 ctime=1460687405.982514823\n 其格式如下: 扩展 header 应包含一个或多个记录,每个记录的构造如下: “%d %
我有一个简单的视频文件上传表单。它可以在普通 PC 上运行,但是当从移动设备 (Android) 上传时,它会将文件 mime 类型发送为 application/octet-stream,文件 nu
目前,当我使用 shared access signature (SAS) Token 构建 URL 时,我遇到了 Azure 文件存储问题。 。文件将在浏览器中下载,但内容类型始终是应用程序/八位字
我有一个与 corba 相关的问题。 在我的 Java 应用程序中我使用typedef 序列数据; 现在我开始研究这个数据 vector 。如果我对 Corba 规范的理解是正确的序列将转换为 xs:
我希望能够将 ipv6 地址解析为八位字节。有没有类似下面的? IPAddress.Parse(address).GetAddressBytes()[0]; IPAddress.Parse(addre
我们使用以 CHAR(18) 字符集八位字节形式存储在表中的二进制值。 在 Firebird 2.0.4 中,我们使用 ASCII 作为默认数据库字符集和连接字符集。我们有一个可以生成所需数据的 UD
我正在调用imageServer并得到一个 x-genericbytedata-octet-stream 作为响应。所以我想知道我是否可以将其转换为可操作的某种格式,例如ndarray。 这就是我得到
我有一个第三端服务,它向我的 Django 应用程序发出带有文件的 POST 请求。要成功上传到 Django 应用程序,请求必须具有“multipart/form-data”内容类型,但内容类型在我
在将 Spring-MVC 应用程序部署到 Tomcat 服务器时,我遇到了一个问题:服务器一直使用 application/x-octet-stream 作为响应类型。因此,浏览器不会显示页面,而是
我有一个非常基本的问题: 我正在编写代码以使用 JSP 和 Servlet 下载 CSV 文件。我从互联网论坛上获得了代码并且工作正常,但我试图理解以下两行的重要性 response.setConte
如何在 C 语言中将 char 字符串编码为 Octet 字符串?例如,如果有: char *string = "245732473"; 我需要将此字符串编码为八位字节字符串吗?我怎样才能做到这一点?
我正在尝试从 http://api.openweathermap.org/data/2.5/forecast/daily?lat=35&lon=139&cnt=10&mode=json 接收 json
八位字节串和字符有什么区别?如何使用八位字节串?任何人都可以在 Octet 字符串上编写一个小的 C 程序吗?八位字节字符串如何存储在内存中? 最佳答案 标准(等等)使用“八位组”来明确声明他们谈论的
这就是我正在处理的事情。我们的一个程序有一个支持表格,用户可以使用它来请求支持。这个表单的作用是,它向 PHP 脚本执行 HTTP POST 请求,该脚本应该收集信息并将其转发到支持电子邮件地址。 P
我正在尝试通过以下方式使用数据 uri 下载文件: 问题是下载的文件总是命名为“Unknown”,无论我尝试使用什么文件名。这是给文件命名的正确方法吗?或者其他需要完成了吗? 最佳答案 这是解决方案
我正在使用 Postman 发送以下请求: 我的 Controller 看起来像这样: @RestController @RequestMapping(path = RestPath.CHALLENG
我不断收到这个警告 资源被解释为字体,但以MIME类型application / octet-stream传输:“ http://127.0.0.1:8080/assets/font/fontawes
我正在将消息从 Azure IoT 中心路由到 Blob 容器 ( Azure Storage as a routing endpoint )。发送到 IoT 中心的消息的内容类型为“applicat
我有一个 REST Controller : @RequestMapping(value = "greeting", method = RequestMethod.GET, produces = "a
我是一名优秀的程序员,十分优秀!