我收到了必须导入到SQL表中的文本文件,我必须附带SSIS,因为我每天都会收到平面文件,第一行作为Customer_ID,然后输入发票详细信息,然后输入总计发票。
例子 :
30303
0000109291700080190432737000005产品名称
0000210291700080190432737000010产品名称
0000309291700080190432737000000产品名称
003 000145
所以,让我解释一下:
首先30303是客户编号
其他行发票明细
00001-> ROWID 092917-> DATE 000801904327-> PROD 370-> Trans 00010-> AMOUNT
产品名称
最后一行
003 ==>总行000145 ==>发票总数
有任何线索吗?
我将使用脚本组件作为数据流任务中的源。然后,您可以使用C#或VB.net读取文件,例如,通过使用System.IO.StreamReader
,可以使用任何所需的方式。您可以一次读取一行,将值存储在变量中以写入每一行(例如,客户编号),等等。对于复杂的文件,它非常灵活。
这是一个基于您的数据的示例脚本(C#):
public override void CreateNewOutputRows()
{
System.IO.StreamReader reader = null;
try
{
bool line1Read = false;
int customerNumber = 0;
reader = new System.IO.StreamReader(Variables.FilePath); // this refers to a package variable that contains the file path
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (!line1Read)
{
customerNumber = Convert.ToInt32(line);
line1Read = true;
}
else if (!reader.EndOfStream)
{
Output0Buffer.AddRow();
Output0Buffer.CustomerNumber = customerNumber;
Output0Buffer.RowID = Convert.ToInt32(line.Substring(0, 5));
Output0Buffer.Date = DateTime.ParseExact(line.Substring(5, 6), "MMddyy", System.Globalization.CultureInfo.CurrentCulture);
Output0Buffer.Prod = line.Substring(11, 12);
Output0Buffer.Trans = Convert.ToInt32(line.Substring(23, 3));
Output0Buffer.Amount = Convert.ToInt32(line.Substring(26, 5));
Output0Buffer.ProductName = line.Substring(31);
}
}
}
catch
{
if (reader != null)
{
reader.Close();
reader.Dispose();
}
throw;
}
}
脚本组件的“输出0”中的列配置如下:
Name DataType Length
==== ======== ======
CustomerNumber four-byte signed integer [DT_I4]
RowID four-byte signed integer [DT_I4]
Date database date [DT_DBDATE]
Prod string [DT_STR] 12
Trans four-byte signed integer [DT_I4]
Amount four-byte signed integer [DT_I4]
ProductName string [DT_STR] 255
要实现这一点:
public override void CreateNewOutputRows()
方法上(替换它)。问题内容: 这是上一个问题的详细说明,但是当我深入研究python时,我对python如何处理csv文件感到更加困惑。 我有一个csv文件,并且必须保持这种状态(例如,无法将其转换为文本文件)。它相当于5行乘11列的数组或矩阵或向量。 我一直在尝试使用在这里和其他地方(例如)找到的各种方法来读取csv,以便它保留列和行之间的关系,其中第一行和第一列=非数值。其余为浮点值,并包含正浮点数和负浮点数。
我正在尝试使用日志将txt文件加载到弹性搜索中。txt 文件是一个简单的文本,由 3 行组成,如下所示: 文本文件 我的conf文件如下所示: 运行这个并转到Kibana后,我可以看到正在创建的索引。但是,我看到的唯一消息是前两行,最后一行没有显示。这是我看到的: 基巴纳页面 有人知道为什么最后一行没有被导入,我该如何解决这个问题吗? 谢谢大家的帮助。
问题内容: 我想显示日志文件的最后10行, 从最后一行开始 -就像普通的日志阅读器一样。我以为这是tail命令的一种变体,但是我在任何地方都找不到。 问题答案: 我最终使用,该版本可在我的OSX上使用(不)
问题内容: 我正在尝试将脚本的结果输出到文本文件中。脚本运行良好,唯一的问题是将结果保存到文本文件(output.txt)中时,仅保存了最后一行,不是全部吗?我不确定我在做什么错。任何建议将不胜感激。 欢呼! 问题答案: 你需要写 这将附加文件,而不是覆盖放置在文件中的任何内容。
本文向大家介绍PHP执行SQL文件并将SQL文件导入到数据库,包括了PHP执行SQL文件并将SQL文件导入到数据库的使用技巧和注意事项,需要的朋友参考一下 上面text.sql是你需要执行的sql文件,DB_HOST主机名,DB_USER用户名,DB_PASS密码! 这只是最基本的自动执行sql文件,你还可以自定义生成数据库的名称,方法就是将sql文件中下面的代码删去 USE 数据库名 然后在te
我试图解析全名,将其读作名字、中间名、姓氏和后缀。我已经尝试了半段SQL代码,但我需要帮助根据以下逻辑获取后缀。 如果没有后缀,则留下字段NULL如果没有中间名,则留下字段NULL ,Ltrim(子字符串(名称,1,Isnull(Nullif(CHARINDEX(“”,NAME),0),1000))作为FirstName,Ltrim(子字符串(名称,CHARINDEX(“”,NAME),CASE