我必须使用一堆数据来txt文件(在一种情况下,每行上都有一个字符串,在另一个文件的末尾有一个换行符,它只是字符串,有空格但没有明显的断开方式除了数据)。但是文件集包含超链接。这些数据目前还没有存在于表格中 - 我不确定将其导入适当的列/数据字段的最佳方式。
我需要做的就是拉数据"字符串"出现在两个文件中。
示例File1:
http://-28uw.c.cr http://www.2xik.com http://www.365cnblog.cn http://www.blogactif.net http://www.blogactifs.com http://www.blogalbums.com http://www.blogallerys.com ... etc.
示例文件2:
http://en.wikipedia.org
http://stayyoungafter50.com
http://108.160.146.227
http://10tv.com
http://110mb.com
我不关心www或http或https我想要做的就是在两个文件中找到匹配的10tv.com。或cnn.com,那就是它。
有什么建议吗?
答案 0 :(得分:0)
以下是我如何处理它(尽管使用PowerShell而不是SQL):
clear
pushd c:\myPath\myFolder\
#read in the contents of the files
$file1 = get-content("file1.txt")
$file2 = get-content("file2.txt")
#loop through each row of the whitespace separated file
$file1 = $file1 | %{
#for each line, split on whitespace characters, returning the results back in a single column
$_ -split "\s" | %{$_}
}
#compare the two files for matching data & output this info
compare-object $file1 $file2 -IncludeEqual -ExcludeDifferent | ft -AutoSize
popd
注意:要忽略协议,只需使用与空格分割类似的技术将其从字符串中删除;即一个正则表达式,这次是替换而不是拆分。
clear
pushd c:\temp
$file1 = get-content("file1.txt")
$file2 = get-content("file2.txt")
$file1 = $file1 | %{
$_ -split "\s" | %{
$_ -replace ".*://(.*)",'$1'
}
}
$file2 = $file2 | %{
$_ -replace ".*://(.*)",'$1'
}
compare-object $file1 $file2 -IncludeEqual -ExcludeDifferent | ft -AutoSize
但是,如果您更喜欢SQL解决方案,请尝试此操作(MS SQL Server):
create table f1(url nvarchar(1024))
create table f2(url nvarchar(1024))
BULK INSERT f1
FROM 'C:\myPath\myFolder\file1.txt'
WITH ( ROWTERMINATOR =' ', FIRSTROW = 1 )
BULK INSERT f2
FROM 'C:\myPath\myFolder\file2.txt'
WITH ( FIRSTROW = 1 )
go
delete from f1 where coalesce(rtrim(url),'') = ''
delete from f2 where coalesce(rtrim(url),'') = ''
select x.url, x.x, y.y
from
(
select SUBSTRING(url,patindex('%://%',url)+3, len(url)) x
, url
from f1
) x
inner join
(
select SUBSTRING(url,patindex('%://%',url)+3, len(url)) y
, url
from f2
) y
on y.y = x.x