我正在尝试使用SSIS将Csv文件导入SQL SERVER
这是一个数据看起来像的例子
Student_Name,Student_DOB,Student_ID,Student_Notes,Student_Gender,Student_Mother_Name
Joseph Jade,2005-01-01,1,Good listener,Male,Amy
Amy Jade,2006-01-01,1,Good in science,Female,Amy
....
Csv列不包含文本限定符(引号)
我使用SSIS创建了一个简单的程序包,将其导入到SQL中,但有时SQL中的数据如下所示
Student_Name Student_DOB Student_ID Student_Notes Student_Gender Student_Mother_Name
Ali Jade 2004-01-01 1 Good listener Bad in science Male,Lisa
原因是somtimes [Student_Notes]列包含用作列定界符的逗号(,),因此未正确导入行
有什么建议
一个警告:我不是常规的C#编码器。
但是无论如何,此代码执行以下操作:
它打开一个名为C:\ Input.TXT的文件
它搜索每一行。如果该行有五个以上的逗号,则它将所有多余的逗号从倒数第三个字段中删除(注释)
它将结果写入C:\ Output.TXT-这是您实际需要导入的结果
可以进行许多改进:
请记住,您的软件包将需要对相应文件夹的写权限
public void Main()
{
// Search the file and remove extra commas from the third last field
// Extended from code at
// http://stackoverflow.com/questions/1915632/open-a-file-and-replace-strings-in-c-sharp
// Nick McDermaid
string sInputLine;
string sOutputLine;
string sDelimiter = ",";
String[] sData;
int iIndex;
// open the file for read
using (System.IO.FileStream inputStream = File.OpenRead("C:\\Input.txt"))
{
using (StreamReader inputReader = new StreamReader(inputStream))
{
// open the output file
using (StreamWriter outputWriter = File.AppendText("C:\\Output.txt"))
{
// Read each line
html" target="_blank">while (null != (sInputLine = inputReader.ReadLine()))
{
// Grab each field out
sData = sInputLine.Split(sDelimiter[0]);
if (sData.Length <= 6)
{
// 6 or less fields - just echo it out
sOutputLine = sInputLine;
}
else
{
// line has more than 6 pieces
// We assume all of the extra commas are in the notes field
// Put the first three fields together
sOutputLine =
sData[0] + sDelimiter +
sData[1] + sDelimiter +
sData[2] + sDelimiter;
// Put the middle notes fields together, excluding the delimiter
for (iIndex=3; iIndex <= sData.Length - 3; iIndex++)
{
sOutputLine = sOutputLine + sData[iIndex] + " ";
}
// Tack on the last two fields
sOutputLine = sOutputLine +
sDelimiter + sData[sData.Length - 2] +
sDelimiter + sData[sData.Length - 1];
}
// We've evaulted the correct line now write it out
outputWriter.WriteLine(sOutputLine);
}
}
}
}
Dts.TaskResult = (int)Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success;
}
我想用javascript在csv文件的列中写一个字符串。我使用下面的代码,但是它在一列中写入整个字符串。 这就是我如何创建csv fi: 有什么建议吗?
问题内容: 我正在尝试将数据从CSV文件导入到SQL Server 2008表。数据上传正常,但是我只想导入选定的列,而不是全部,然后将它们添加到新表中,编号相同。列,使用向导,但没有发生,向导正在选择所有列。 所以有可能使用向导仅导入选定的列。 问题答案: 如果使用“导入/导出”向导,则在进入“选择源表和视图”时,单击屏幕左下方的“编辑映射”按钮。这将打开列映射屏幕;在目标列上,选择“忽略”以删
我一直在努力设置一个flink应用程序,该应用程序从csv文件创建。这个文件中的列(列)都是String,但应该将它们转换为Integer、java.sql.time和double。我想要的另一件事是创建包含每天数据的滚动窗口,并对该窗口中列的值进行平均。问题是我不知道它的确切语法。请参阅下面我尝试的代码。最后一部分我有sum(2),但我想计算窗口的平均值。我在文档中没有看到这方面的函数。我需要为
问题内容: 我想导入两种CSV文件,有些使用“;” 对于定界符,其他使用“,”。到目前为止,我一直在接下来的两行之间切换: 要么 是否可以不指定分隔符,而让程序检查正确的分隔符? 下面的解决方案(Blender和sharth)对于用逗号分隔的文件(由Libroffice生成)似乎效果很好,但对于以分号分隔的文件(由MS Office生成)却不起作用。这是一个用分号分隔的文件的第一行: 问题答案:
我有一个CSV文件,有三列:col1,col2,col3。我试图在这个文件中附加一个只包含col2的数据框 结果是: 我希望: 有可能以某种方式实现这一点吗?
我想以这种方式在csv中写入arraylist中的任何内容,无论其大小如何,但一个数组的值较少,这会导致数组越界错误,有没有办法解决这个问题? 在这个A到H中,它有自己的arraylist,有时其他数组中的元素少于A的大小,这会导致数组超出范围。