以下に示す「結果を名前を付けて保存」オプションの使用。 CSVは良さそうです。
しかしExcelがそれを開く/インポートするとき:
ダンスなしでクリーンなExcelファイル(実際のxls/xlsx)へのクエリを取得するにはどうすればよいですか? (実際にはSQLファイル自体にすべてを入れたいのですが、 "SELECT INTO FILE:C:\ SQLOUTPUT\DATA.XLS ..."を実行できたらと思います)
ダンスなしで機能する唯一の本当の答えは、SSISを使用することです。
単純なSQLが好きなので、SSISを避けたかったのです。単純なSQLは次のとおりです。
私は5分から20分ですべてを行うことができ、完了します。複数のSQL Serverに簡単に複製することもできます。
私は SQL# を使用したかったのですが(長い間、それを使用する言い訳を望んでいました!)ネイティブのExcelエクスポート機能がなく、今日はいくつかの火事と戦わなければならないので、気まずいことができません。それを学ぶ。
SSISやSQLエージェントなどのように断片をチェーンでつなぐ必要がある場合、1時間以上のいじくり回しであり、SQLサーバーを移動するとすべてがバラバラになります(これは16〜24か月ごとに行います)。駒が悪い。
しかし、私はこれのためにw個をスタックしています。
残念。 SQL Serverはメタレベルで強力になると思います。
まず、クエリオプションが希望どおりに設定されていることを確認します。
[クエリ]メニューに移動し、[クエリオプション]を選択します。
強調表示された2つのオプションのうち最初のオプションは、CSVファイルに列ヘッダーを含めるようにSSMSに指示します。 2番目は、コンマを含む列を単一引用符で囲むようにSSMSに指示します。
あなたはすでにこれを行っているのではないかと思いますが、完全を期すために私はそれについて言及する必要があると思いました。
データがExcelで正しく解釈される形式に変換するのにこれが十分でない場合、次の手順は(コメントに記載されているように)インポート/エクスポートWizardを使用してSSISを生成することですただし、ウィザードは常に正しい引用符を取得するとは限りません。特に、二重引用符で囲むことができますが、文字列に埋め込まれた二重引用符を「二重に」することはできません。
一般に、その時点で、私は力ずくで訴えます。
次のような変更されたクエリを作成します。
"
)を二重二重引用符(""
)に置き換えます。したがって、代わりに
ID | First Name | Last Name | Address
----+------------+-----------+-------------------
1 | John "JT" | Smith | 123 Wayne's Way
私は生成します:
One_Big_Column
------------------------------------------------
"1","John ""JT""","Smith","123 Wayne's Way"
クエリを定期的に使用する場合、sortOrder
列(1に設定)が含まれ、ヘッダー行を作成するSELECT
でUNION ALL
edされます。次に、UNION ALL
edクエリをラップして(サブクエリにして)、One_Big_Column
だけを選択して、sortOrder
で並べ替えることができます。
SELECT One_Big_Column
FROM (
SELECT '"Id","First Name","Last Name","Address"' as One_Big_Column
,0 as sortOrder
UNION ALL
SELECT '"' + CAST(Id as varchar(30)) + '","'
+ REPLACE(firstname, '"','""') + '","'
+ REPLACE(lastname, '"','""') + '","'
+ REPLACE(address, '"','""') + '"'
,1 AS sortOrder
FROM myTable
) sq
ORDER BY sortOrder
;
この実行 here を確認できます。
注:CSVを手動でフォーマットする場合は、上記の両方のチェックボックスをオフにすることをお勧めします。
フィールドで同じ問題が発生し、キャリッジリターンに関係しているため、出力の長さを制限してもまったく効果がありませんでした。
Excelに出力するデータを実行する前に、これらのフリーテキストフィールドのクエリを変更して、それらの戻り値を処理します。
SELECT REPLACE(REPLACE(Description, CHAR(10), ''), CHAR(13), ''), ...
一度実行すると、Excelの出力は期待どおりでした。 これ は、私を正しく動かすためのリンクです。
これは、SQL Serverの障害でも、SSMSの障害でもありません。
Excelは設計上、誤った方法でCSVを開く可能性があります。これは、長年にわたってよく知られている問題です。同じExcelで正しく開かないExcelからCSVファイルを簡単にエクスポートすることもできます。
CSVとExcelでの唯一の解決策は、ファイルをダブルクリックしないか、Excel内からOpenコマンドを使用することです(そうしないと、独自に決定して破壊する)代わりに、空のワークシートを開いて使用します- インポート->インポートテキストから。これで、すべての異なる列を管理する方法を伝えることができます。