【发布时间】:2016-05-14 11:14:33
【问题描述】:
所以,我需要帮助弄清楚如何完成这项工作,并且很想与其他 VB 专家展开对话。
我有一个 CSV 文件,每小时都会转储到导入文件夹中。我编写了一个 VB 应用程序,它扫描该文件夹,获取 CSV 文件并将其导入 SQL 数据库。没有问题。
尝试在 SQL 中查询数据时出现问题。我需要的所有重要数据都在一个字段中,这是字段内容的修改示例:
Successful Write by DOMAIN\USERLOGIN on /SOMENETWORKSHARE/FOLDER/MyFolder/USERLOGIN/DesktopBackUp/log.txt
所以基本上我需要一种方法将上述行拆分为多个字段,并且需要在 SQL 导入时发生。
Successful Write“是事件”字段1
by "doesnever change 可以用作分隔符"
DOMAIN/USERLOGIN "DOMAIN 不会改变,但 userlogin 会" 字段 2
关于“永远不会改变可以用作分隔符”
/SOMENETWORKSHARE/FOLDER/MyFolder/USERLOGIN/DesktopBackUp/“这是文件路径”字段3
log.txt“已修改的文件名”字段 4
有时没有文件名,只有文件路径。
我愿意接受建议,但是,CSV 文件不会更改,我也无法更改文件传递给我的方式。
提前致谢。
这是数据库结构
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[SACL](
[Unique ID] [varchar](max) NULL,
[Event ID] [varchar](max) NULL,
[Event Time] [datetime] NULL,
[Severity] [varchar](max) NULL,
[Workspace] [varchar](max) NULL,
[Headline] [varchar](max) NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
[Event] [varchar](max) NULL,
[Username] [varchar](max) NULL,
[Path] [varchar](max) NULL,
[Filename] [varchar](max) NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
【问题讨论】:
-
Google VB Substring() 或 VB Regex。祝你好运
-
我认为你没有提到 条你想要的数据。
-
我想把那个长字段名拆分成 4 个字段,我在上面把它们分解了。
-
感谢@mxix 的正则表达式建议,这可能会奏效。我将尝试使用它,看看我是否可以构建一个模式并发布它。
-
您有多种选择: 1. 使用 VB 代码在中途拆分 2. 使用 SQL 表达式在中途拆分 3. 在表中创建计算列进行拆分它 4. 在拆分数据的表上创建一个视图。我的经验是这样拆分数据很容易出错,您需要能够轻松调整拆分算法。我首先建议您编写一些选择语句来使用 SQL 获取数据,并了解提取数据所需的复杂程度。
标签: sql-server vb.net csv import