【发布时间】:2020-12-07 19:28:10
【问题描述】:
我的要求是获得这样的 CSV 源文件:
ID,[%age],[name]
75,8,"Ander,Pat"
我想从此 csv 创建一个动态 SQL 表,如下所示:
ID,[%age],[name]
75,8,Ander,Pat (this should come in a single column)
问题是我的 C# 代码将 [name] 读取为两个不同的列,即 Ander 和 Pat
因为文件分隔符 = ','
能否请您帮助我应该在 c# 代码中包含什么来处理这个问题?
编辑:这是我的代码:
string TableName = "";
int counter = 0;
string line;
string ColumnList = "";
System.IO.StreamReader SourceFile =
new System.IO.StreamReader(fileName);
while ((line = SourceFile.ReadLine()) != null)
{
if (counter == 0)
{
ColumnList = "[" + line.Replace(FileDelimiter, "],[") + "]";
TableName = (((fileName.Replace(SourceFolderPath, "")).Replace(FileExtension, "")).Replace("\\", ""));
string CreateTableStatement = "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[" + SchemaName + "].";
CreateTableStatement += "[" + TableName + "]')";
CreateTableStatement += " AND type in (N'U'))DROP TABLE [" + SchemaName + "].";
CreateTableStatement += "[" + TableName + "] Create Table " + SchemaName + ".[" + TableName + "]";
CreateTableStatement += "([" + line.Replace(FileDelimiter, "] " + ColumnsDataType + ",[") + "] " + ColumnsDataType + ")";
SqlCommand CreateTableCmd = new SqlCommand(CreateTableStatement, myADONETConnection);
CreateTableCmd.ExecuteNonQuery();
}
else
{
string query = "Insert into " + SchemaName + ".[" + TableName + "] (" + ColumnList + ") ";
query += "VALUES('" + line.Replace(FileDelimiter, "','") + "')";
【问题讨论】:
-
你能分享你的代码吗?
-
这里没有!使用该代码编辑您的问题。
-
好的,确定。谢谢
-
嗨@Akif,您在这里找到解决方案了吗?谢谢。
-
TextQualifier 有设置吗?在您的数据中,名称周围有 " ,但是如果您的代码没有说引号是文本限定符(围绕数据并忽略中间的逗号),它将拆分它们。如果您识别文本限定符,它应该可以工作(如果该设置存在于您设置的代码中)
标签: c# csv ssis script-task qualifiers