Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 平面文件导入:删除数据_Sql_Regex_Tsql_Ssis - Fatal编程技术网

Sql 平面文件导入:删除数据

Sql 平面文件导入:删除数据,sql,regex,tsql,ssis,Sql,Regex,Tsql,Ssis,早些时候发布了类似的问题,但人力资源部今天改变了条件 我们的人力资源部门以平面文件的形式从SAP系统自动导出。平面文件中的信息看起来是这样的 G/L Account 4544000 Recruiting/Job Search Company Code 0020 -------------------------- | Posting Date| LC amnt| |------------------------| | 01/01/2013 | 406.25 | | 02/01/2013 |

早些时候发布了类似的问题,但人力资源部今天改变了条件

我们的人力资源部门以平面文件的形式从SAP系统自动导出。平面文件中的信息看起来是这样的

G/L Account 4544000 Recruiting/Job Search
Company Code 0020

-------------------------- 
| Posting Date| LC amnt|
|------------------------|
| 01/01/2013 | 406.25 |
| 02/01/2013 | 283.33 |
| 03/21/2013 |1,517.18 |
--------------------------
G/L Account 4544000 Recruiting/Job Search
Company Code 0020

-------------------------- 
| Posting Date| LC amnt|
|------------------------|
| 05/01/2013 | 406.25 |
| 06/01/2013 | 283.33 |
| 07/21/2013 |1,517.18 |
--------------------------
当我查看SSIS平面文件源连接中的数据时,所有信息都在一列中。我曾尝试使用设置为管道的分隔符,但它不会分隔数据,我假设是由于文件顶部和中部的非重要信息

我需要删除顶部和中部的数据,然后将日期和总数拆分为两列

这样做的目的是分离数据,这样我就可以得到连续一年的单一总和

Year    Total
2013    $5123.25
我曾尝试在SSIS中执行此操作,但似乎无法分离列或删除数据。我希望避免脚本任务,因为我不熟悉该组件的代码或操作


任何帮助都将不胜感激。

也许您可以使用MS Excel打开平面文件,使用管道字符作为delimeter,然后根据该文件创建CSV(如果需要)。

缺少脚本任务/组件或完整的自定义SSIS组件,我认为您无法在SSIS中解析该特定格式。平面文件连接管理器允许您选择文本文件中有多少行是要跳过的标题,但是您显示的格式有多个部分,因此有多个标题。还有水平线的问题,平面文件连接无法正确处理


我首先想看看是否有任何方法可以从SAP中获取包含此数据的普通CSV文件。如果这是不可能的,那么您将需要某种自定义代码来去除多余的文本。

我将创建一个临时表,可以导入整个平面文件,然后在SQL级别进行筛选

一个例子

创建表tmp txtline VARCHARMAX

将BCP或SSIS文件放入tmp表中

像这样运行查询以获得结果,您可能需要调整字符串长度以适合平面文件

以cte为例 选择 CASTSUBSTRINGtxtline,2,10作为日期作为发布日期, CASTREPLACEREPLACESUBSTRINGtxtline,15100,“|,”,“,作为数字19,4作为LCAmount 来自tmp 其中ISDATESUBSTRINGtxtline,2,10=1 选择 年报日期, 萨姆卡蒙特 来自cte 按年份分组发布日期


通常我会这样做,但他们希望这是自动化的。他们不想让任何人在设置好后触摸它。所以.txt是源文件,因为它来自SAP,所以它的格式是特定的。这太容易了。我回到了创始人那里,想看看如何将它转换成.csv格式。不幸的是,系统只能输出这种格式。我们可能会考虑聘请一位顾问,为我们未来规划不同的输出。