SSISパッケージを使用してSQL Serverテーブルにcsvファイルをインポートしようとすると、非常に特殊な状況が発生します。 csvファイルのデータには、二重引用符とコンマを使用できます。そのため、コンマ付きのデータは二重引用符で囲み、二重引用符は二重引用符でエスケープします。私は最初の囲み引用符を正常に処理するためにテキスト修飾子を使用しました。しかし、データがフォーマットされている特定の例があります。"" Anne ""、Annabelle "私は処理できません。データの余分な二重引用符は、コンマでフィールドを終了させるように見えます。私はDerived Column Transformationを使って二重引用符を置き換えようとしましたが、それは問題を引き起こさないかもしれないが役に立たないものです。他の誰かがこの問題に遭遇し、解決策または回避策を見つけましたか?あなたはそれらのフィールドからの引用符を失うことでOKなら、あなたはそれがうまくいくインポートする前に、データ内に複数の二重引用符を含むSSISを使用してSQL Serverにcsvファイルをインポートする
3
A
答えて
1
は、簡単なスクリプトタスクは、あなたのファイルを処理する(以下は「_Processed」は、ファイル名に追加された新しいファイルを作成します):
public void Main()
{
System.IO.StreamReader reader = null;
System.IO.StreamWriter writer = null;
try
{
string filepath = Dts.Variables["User::Filepath"].Value.ToString();
reader = new System.IO.StreamReader(filepath);
string fileText = reader.ReadToEnd();
string newFilepath =
System.IO.Path.Combine(
System.IO.Path.GetDirectoryName(filepath),
System.IO.Path.GetFileNameWithoutExtension(filepath) + "_Processed" + System.IO.Path.GetExtension(filepath)
);
if (System.IO.File.Exists(newFilepath))
{
System.IO.File.Delete(newFilepath);
}
writer = new System.IO.StreamWriter(newFilepath);
writer.Write(fileText.Replace("\"\"", ""));
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception ex)
{
Dts.Events.FireError(0, "Script Task", ex.Message, string.Empty, 0);
}
finally
{
if (reader != null)
{
writer.Close();
writer.Dispose();
}
if (writer != null)
{
writer.Close();
writer.Dispose();
}
}
}
あなたが引用符を維持したい場合は、私が変更になります。
writer.Write(fileText.Replace("\"\"", ""));
のようなものに:
writer.Write(fileText.Replace("\"\"", "[double quote removed]"));
を
次に、実際の二重引用符を派生列変換に戻すことができます。
このすべての場合、カンマを区切り文字として使用し、テキスト修飾子としてを使用して、標準フラットファイル接続を使用できます。
関連する問題
- 1. 列内に改行、二重引用符、およびカンマを含むSQL Server CSV抽出テーブル?
- 2. CSVファイルをSQL Serverに一括インポートする - 二重引用符を削除する
- 3. 一重引用符と二重引用符を含むJSON.parse文字列
- 4. 一重引用符、二重引用符、三重引用符を含むLex文字列
- 5. 二重引用符と二重引用符を含む全文検索を照会する方法
- 6. 二重引用符を使用しないでデータ間にコンマを使用してCSVを解析する
- 7. 複数の引き数にスペースと二重引用符を含むexeを実行します
- 8. perlで変数を含む二重引用符を出力するには
- 9. Windowsバッチを使用して出力ファイルに二重引用符を含む文字列のエコー
- 10. SSISを使用してWebTrendsデータをSQL Serverにインポート
- 11. SSISを使用して複数のAccessテーブルをSQL Serverにインポートする方法
- 12. Redisコマンドライン二重引用符を含むSET値
- 13. S3 URLに二重引用符を含むファイル名が無効な引数につながる
- 14. 二重引用符
- 15. 二重引用符と一重引用符を使用する場合mysql
- 16. Python - string.replaceを使用して二重引用符をエスケープする
- 17. 二重引用符で囲んだ二重引用符
- 18. カンマがcsvにある文字列を二重引用符で囲む方法
- 19. 名前の二重引用符を含むファイルの一括変更
- 20. mysqlimportと二重引用符
- 21. pandas.read_csvで二重引用符をエスケープ
- 22. Pythonを使用してCSVファイルをSQL Serverにインポート
- 23. 二重引用符をCSVの値で取得する
- 24. ASP.NET:リテラルのテキストプロパティ内の一重引用符と二重引用符
- 25. csv行から二重引用符を削除します
- 26. 二重引用符で囲む必要があるときに二重引用符が表示される
- 27. JSは二重引用符を含むdomのテキストを取得します
- 28. 二重引用符でカンマを削除して二重引用符を削除する
- 29. 複数行の文字列で二重引用符を使用する方法
- 30. SSISを使用して複数のテキストファイルをSQL Serverにエクスポート
サンプルファイルを提供できますか?たとえそれがヘッダと1つのデータ行だけを含んでいても。それ以外の場合、私はあなたに同様の場合の一般的な解決策を与えることができます。 – Hadi