我编写了一个VBA应用程序,在Outlook中打开一个文件夹,然后遍历消息.我需要将消息体(通过一些调整)写入单个平面文件.我的代码如下......
Private Sub btnGo_Click()
Dim objOutlook As New Outlook.Application
Dim objNameSpace As Outlook.NameSpace
Dim objInbox As MAPIFolder
Dim objMail As mailItem
Dim count As Integer
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox)
count = 0
For Each objMail In objInbox.Items
lblStatus.Caption = "Count: " + CStr(count)
ProcessMailItem (objMail)
count = count + 1
Next objMail
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
有问题的部分是"ProcessMailItem".由于我并不过分关注此阶段的性能,因此对于此示例而言,非常无效的"打开,追加,关闭"文件方法很好.
我知道我可以花点时间用谷歌查找答案,但我先在这里查了一下,但没有好的答案.作为Stackoverflow的粉丝,我希望将其放在这里将有助于未来的开发人员寻找答案.谢谢你的耐心.
我有一个SSIS包,使用带有TON字段的制表符分隔的平面文件源.最近,制表符分隔的平面文件的供应商已决定通过随机洒几打新油田的文件来改变平面文件的格式.毋庸置疑,这个包裹了.
而不是重建另一个平面文件源并重新定义所有字段,类型和长度,有没有办法重新排序平面文件源中的字段?如果Microsoft允许您在"高级列"窗格中移动字段,那肯定会很好,但是noooooo.
任何帮助表示赞赏.
我计划有一个SQL事实表,涉及一个我不希望索引的文本字段(我只读出数据,很少更新它).我认为这个表可能会变得非常大,主要是由于这个文本字段.我的数据库中的其余数据确实是有关系的,但我相信如果我存储指向平面文件的指针(其中每个指针指向存储在S3中的不同文本文件),我可以更容易和更便宜地扩展.而不是使用文本字段.
这似乎是越来越受欢迎的替代方案是一个完全的NoSQL基于文档的解决方案(例如,CouchDB的,MongoDB的,等等),我想知道什么是权衡(可扩展性/可靠性/安全/性能/易于实施的/易于维护/成本在简单地使用SQL文本字段,指向平面文件的指针,还是在NoSQL文档存储的上下文中完全重新思考整个系统之间?
有办法:
我知道有另一种方法可以将文件的所有内容都放在一个字符串中,但是正如你所知,如果文件的大小很大,那么方法就是时间和内存效率低下.
在Raymond Hettinger的谈话中,他展示了数据库索引的表示.显示在它下面
[None, 4, None, 1, None, None, 0, None, 2, None, 3, None, None, None,None]
Run Code Online (Sandbox Code Playgroud)
我认为他后来在演讲中对此进行了解释,但我无法将各个部分组合在一起
虽然我得到它包含表的索引,该数组是什么以及它是如何生成的?它代表什么?具体来说,列表中第一个位置(第二个,如果不是零索引)中的4代表什么?
SSIS非常适合处理所有记录相同的平面文件,但是当有一点复杂性时则不太好.
我想导入一个类似于此的文件 -
Customer: 2344
Name: John Smith
Item Description Price Qty
543455 Widget 1 4.00 2
543556 Widget 2 8.00 1
Run Code Online (Sandbox Code Playgroud)
我想把它变成以下输出 -
2344, John Smith, 543455, Widget 1, 4.00, 2
2344, John Smith, 543556, Widget 2, 8.00, 1
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我找不到一个简单的方法来做到这一点.有没有人有任何建议?或者我需要一个更好的ETL工具?
(Flat File Location)
Samba Share | Windows Share
(SSIS) _______________________________
| |
XP 32bit | Works | Works
| |
2003 Serv 32bit | Works | Works
| |
Vista 64bit | ERROR | Works
| |
Win 7 64bit | ERROR | Works
| |
2008 Serv 64bit | ERROR | Works
我在VS 2008中创建了一个SSIS包,它从共享文件夹中解析一个平面文件,并将记录放入SQL Server数据库中.
我最近在新工作站上安装了Windows 7和VS 2008.当我从TFS导入包并打开它时,我收到错误
验证错误.解析和导入目录平面文件:MySSISPackage:连接中指定的文件名"\\ shared\flatfile.txt"无效.
当我打开平面文件连接管理器编辑器时,出现错误说明:
必须选择有效的文件名
我可以浏览并从编辑器中选择文件,但由于此错误,我无法更改任何属性,或远离"常规"选项卡.
如果我回到我的笔记本电脑(Windows XP),首次创建软件包,没有错误.两个工作站都在同一个域上,我使用相同的凭据登录.
关于为什么我会从一个工作站而不是另一个工作站收到此错误的任何想法?
更新:如果我从正在运行的工作站获取.dtsx包并将其加载到服务器上的SSIS中,则在尝试运行时会出现以下错误:
错误:连接中指定的文件名"\\ shared\flatfile.txt"无效.
和...
错误:连接"MySSISPackage"验证失败.
和...
错误:文件名属性无效.文件名是设备或包含无效字符.
更新2:
a)我试图从平面文件中提取的共享文件夹是Unix机器上的Samba共享.
b)如果我在任何64位平台(Windows 7 …
我认为这已经有了一个问题,但我找不到一个.也许解决方案太容易了......无论如何,我有一个平面文件,并希望让用户根据名称更改值.我已经整理出使用fopen('a')模式创建新名称+值对,使用jQuery发送带newValue和的AJAX调用newName.但是说内容看起来像这样:
host|http:www.stackoverflow.com
folder|/questions/
folder2|/users/
Run Code Online (Sandbox Code Playgroud)
现在我想改变folder价值.所以,我会在发送folder的oldName和/tags/作为newValue.覆盖价值的最佳方法是什么?列表中的顺序无关紧要,名称将始终位于左侧,后跟|(管道),值,然后是a new-line.
我首先想到的是阅读列表,它存储在数组中,搜索所有[0]的对oldName,然后更改[1]属于它,然后把它写回文件.但我觉得有一个更好的解决方法吗?有任何想法吗?也许正则表达式?
当我尝试将.csv逗号分隔的平面文件导入Microsoft SQL Server 2008R2 64位实例时,对于字符串列,原始数据中的NULL变为文字字符串"NULL",并且在数字列中我收到导入错误.谁能请帮忙??? 提前致谢!
我有一个txt文件,其中包含企业的联系信息.目前,每行包含业务的不同数据.我正在尝试构建一个管道分隔文件,其中包含单行上每个业务的所有信息.问题在于每个企业都有不同数量的生产线.所以文件看起来像这样:
Awesome Company Inc|
Joe Smith, Owner|
Jack Smith, Manager|
Phone: (555)456-2349|
Fax: (555)456-9304|
Website: www.awesomecompanyinc.com [HYPERLINK: http://www.awesomecompanyinc.com]|
* Really Cool Company|
* Line of business: Awesomesauce|
Killer Products LLC|
Jack Black, Prop|
Phone: (555)234-4321|
Fax: (555)912-1234|
1234 Killer Street, 1st Floor|
Houston, TX 77081|
* Apparel for the classy assassin|
* Fearful Sunglasses|
* Member of the National Guild of Killers since 2001|
* Line of business: Fuhgettaboutit|
Run Code Online (Sandbox Code Playgroud)
等等
所以我可以:g/<pattern>/j用来连接一个模式中的行,但是我在弄清楚模式应该是什么时遇到了麻烦.在上面的示例中,第1-9行需要连接,然后第10-19行.
关键是以2个空格和星号开头的行:
* Line of business
Run Code Online (Sandbox Code Playgroud)
模式基本上应该说:"从以字母开头的第一行开始,连接所有行,直到最后一行开头后的第一行\ …