![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Перенос данных из двух txt в 1 по контрольному значению |
|
|
Любой язык - Перенос данных из двух txt в 1 по контрольному значению
|
Пользователь Сообщения: 50 |
Здравствуйте!
Помогите, пожалуйста, с советом. У меня по работе скриптов, формируется два файла txt, в которых огромный массив данных. Из этого массива, надо извлечь все данные с контрольным значением 11, 99, 14 (это значения, что марки ликвидные), скрепить их с данными из другого файла с ценой и вывести в отдельный txt файл в виде столбца SGТIN; цена Т.е. примерно вот так: 048101330038010000008019952;;11; отсюда берем 048101330038010000008019952 по нему ищем в другом файле значение, эта строка будет выглядеть так: 048101330038010000008019952;KЪЙ5ТШOГNАUГНRЧПГ6Ц140; 55.00000000 а в итоге получить вот так: 048101330038010000008019952;55.00000000 Образцы файлов: Это где sgtin по контрольным значениямФайл 164836 А это где тот же sgtin но с ценой Файл 164837 |
|
Отправлено: 11:42, 02-07-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Technik_spat:
|
|
Отправлено: 12:23, 02-07-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать До 400 000 строк
|
Отправлено: 12:29, 02-07-2021 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Technik_spat, поместите amark_sgtin.txt и REPACK.txt в один каталог. Поместите следующий код:
Скрытый текст
Option Explicit
Const adLockOptimistic = 3
Const adOpenStatic = 3
Const adCmdText = 1
Dim objFSO
Dim objRecordSet
Dim strPath2Script
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRecordSet = WScript.CreateObject("ADODB.Recordset")
strPath2Script = objFSO.GetParentFolderName(WScript.ScriptFullName)
With objFSO.CreateTextFile(objFSO.BuildPath(strPath2Script, "Schema.ini"), True)
.WriteLine Join( _
Array( _
"[amark_sgtin.txt]", _
"ColNameHeader=True", _
"Format=Delimited(;)", _
"TextDelimiter=none", _
"CharacterSet=ANSI", _
"", _
"[REPACK.txt]", _
"ColNameHeader=False", _
"Format=Delimited(;)", _
"TextDelimiter=none", _
"CharacterSet=ANSI", _
"Col1=SGTIN Text", _
"Col2=Any Text", _
"Col3=Price Text", _
"", _
"[ResultFile.txt]", _
"ColNameHeader=True", _
"Format=Delimited(;)", _
"TextDelimiter=none" _
), vbCrLf _
)
.Close
End With
If objFSO.FileExists(objFSO.BuildPath(strPath2Script, "ResultFile.txt")) Then
objFSO.DeleteFile objFSO.BuildPath(strPath2Script, "ResultFile.txt")
End If
objRecordSet.Open "SELECT L.[SGTIN], R.[Price] " & _
"INTO [ResultFile.txt] " & _
"FROM [amark_sgtin.txt] AS L LEFT JOIN " & _
"[REPACK.txt] AS R ON " & _
"L.[SGTIN] = R.[SGTIN] " & _
"WHERE L.[STATUS] IN (11, 99, 14)", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath2Script & ";Extended Properties=""text;""", _
adOpenStatic, adLockOptimistic, adCmdText
Set objRecordSet = Nothing
Set objFSO = Nothing
WScript.Quit 0
в файл с расширением .vbs в тот же каталог. Запустите скрипт из сохранённого файла на исполнение (если у Вас x64 ОС — используйте x86-версию хоста wscript.exe/cscript.exe из каталога C:\Windows\SysWOW64). Если скрипт отработает корректно, Вы получите в том же каталоге результирующий csv-файл ResultFile.txt с искомым содержимым. Например: ![]() |
Последний раз редактировалось Iska, 03-07-2021 в 03:43. Отправлено: 03:34, 03-07-2021 | #4 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
||
Отправлено: 08:03, 03-07-2021 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Technik_spat, сколько по времени у Вас вышло?
|
Отправлено: 13:33, 03-07-2021 | #6 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Конкретно по Вашему скрипту отработало до 17 000 строк (остальные тупо отвалились на этапе отбора по фильтру), в районе 1-3 минут.
|
Отправлено: 15:53, 03-07-2021 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:04, 03-07-2021 | #8 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать А в Powershell сколько будет выполняться? (Подразумевается версия 5.1)
Measure-command -Expression { $sgtin = (Import-Csv "C:\temp\amark_sgtin.txt" -Delimiter ';' -Encoding default |? status -match "^11$|^14$|^99$").sgtin $prices = Import-Csv "C:\temp\REPACK.txt" -Delimiter ';' -Encoding default -Header sgtin,0,price |select sgtin,price $result = @() $prices |% { if ($_.sgtin -in $sgtin) {$result += $_} } $result |Export-Csv "C:\temp\result.csv" -Delimiter ';' -Encoding default -NoTypeInformation } pause |
------- Последний раз редактировалось DJ Mogarych, 06-07-2021 в 09:58. Отправлено: 14:27, 04-07-2021 | #9 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата:
Цитата Iska:
|
|||
Отправлено: 09:49, 05-07-2021 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Выборочное копирование по значению в txt (csv) файлах | Technik_spat | Скриптовые языки администрирования Windows | 4 | 05-06-2021 11:27 | |
Установка - [решено] Перенос данных с HDD старой на нову, без потери данных, стороннего ПО и настроек ПО и | Forgiven1 | Microsoft Windows 10 | 7 | 23-10-2020 12:00 | |
VBS/WSH/JS - Выбор данных из txt файла | leks71 | Скриптовые языки администрирования Windows | 2 | 13-04-2015 20:00 | |
Любой язык - Выборка данных из txt | KarpovStas | Скриптовые языки администрирования Windows | 22 | 27-11-2013 17:16 | |
CMD/BAT - [решено] Выбор данных из txt по маске | hxygen | Скриптовые языки администрирования Windows | 4 | 24-10-2010 15:52 |
|