7

私がする必要があるのは、T-SQLを使用してデータをCSVファイルにエクスポートすることです。

そして、私はそれを行うことができる多くの方法があることについて非常に混乱しています、私はどれを選ぶべきかわかりません、私が以下を確認するのを手伝ってください:

私が知っているように、約3つの方法があります、そして私はあなたが私が確認するのを手伝って欲しいです:

次のように、Microsoft.Jet.OLEDB.4.0を使用します。

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                       'Text;Database=C:\Temp\;HDR=Yes;',
                       'SELECT * FROM test.csv')
            (object_id, name)
SELECT object_id, name
  FROM sys.tables;

しかし、これにはcsvファイルがあり、ヘッダーが必要です

SQLCMDを使用する

コマンドライン。

BCPを使用する

ユニオンを使用し、データとその列ヘッダーを取得します。

これは、CSVへのT-SQLエクスポートについての私の理解です。確認にご協力ください。

CSVにエクスポートする他の方法はありますか?

ありがとう!

4

5 に答える 5

5

UNIONを使用して、次のようなヘッダー行を作成できます。

SELECT 'object_id', 'name'

UNION ALL

SELECT object_id, name
FROM sys.tables
于 2012-09-24T15:25:43.610 に答える
5

SQLServerで次のコマンドを実行します。

EXEC xp_cmdshell 'SQLCMD -S . -d MsVehicleReg2 -Q "SELECT * FROM tempViolationInfo" -s "," -o "O:\result.csv"';
于 2013-05-08T14:13:26.447 に答える
4

T-SQLの方法は次のとおりです。

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

ただし、いくつかの注意点があります。

  1. Microsoft.ACE.OLEDB.12.0プロバイダーを利用できるようにする必要があります。Jet 4.0プロバイダーも機能しますが、古いので、代わりにこれを使用しました。

  2. .CSVファイルはすでに存在している必要があります。ヘッダー(HDR = YES)を使用している場合は、.CSVファイルの最初の行がすべてのフィールドの区切りリストであることを確認してください。

于 2014-01-22T15:15:16.837 に答える
1

Ace.OLEDB.12.0(新しいJet再配布可能エンジン)の場合、Accessから、それ自体であるかどうかにかかわらず、「その他のフレーバー」が既にインストールされている場合でも、32ビットまたは64ビットのスタンドアロンエンジンをインストールできます。等:

/passiveコマンドラインオプションを使用します。

(32ビット):AccessDatabaseEngine.exe /パッシブ(64ビット):AccessDatabaseEngine_64.exe/パッシブ

私の場合、64ビットのSQL Express 2008 R2があり、32ビットのOffice 12アプリがインストールされています(したがって、32ビットのACEドライバーがインストールされています)。64ビットのAccessDatabaseEngine_64.exeをインストールしましたが、今はうまく機能しています...

また、これは、他の構成作業を行ったことを前提としています。

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0'、N'AllowInProcess'、1 GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0'、N'DynamicParameters'、1 GO

sp_configure'詳細オプションを表示'、1; 再構成します。GO sp_configure'アドホック分散クエリ'、1; 再構成します。行く

于 2014-02-28T18:42:40.693 に答える
1

「ベストプラクティス」に関しては、ベストプラクティスはありません。以下に限定されない、いくつかのオプションが利用可能です。

  • INSERT INTO OPENROWSET(...)SELECT * from[MyTable]..を使用したT-SQLの場合

  • ジョブステップから、またはxp_cmdshellを使用したT-SQLで、BCPを実行する

  • SSISパッケージ

  • PowerShell(SQL Server 2008以降のジョブステップから)またはその他の外部スクリプト/実行可能ファイル

于 2014-02-28T18:47:40.340 に答える