Excelスプレッドシートの列をSQLServerデータベースにインポートします

2008年12月18日に質問されました。  ·  閲覧回数 402.4k回  ·  ソース

user47206 picture
2008年12月18日

選択した列をSQLServer2008データベーステーブルにインポートしたいExcelスプレッドシートがあります。 ウィザードはそのオプションを提供しませんでした。

簡単なコードオプションはありますか?

回答

Tejas picture
2010年06月09日
51

Sql Server 2005データベースに接続したら、[オブジェクトエクスプローラー]ウィンドウで、テーブルをインポートするデータベースを右クリックします。 [タスク]-> [データのインポート]を選択します。 これはシンプルなツールであり、受信データを適切なテーブルに「マッピング」することができます。 スクリプトを保存して、必要に応じて再度実行できます。

inspite picture
2008年12月18日
25

Microsoftは、いくつかの方法を

  • SQL Serverデータ変換サービス(DTS)
  • Microsoft SQL Server 2005 Integration Services(SSIS)
  • SQLServerリンクサーバー
  • SQLServer分散クエリ
  • ActiveXデータオブジェクト(ADO)およびSQLServer用のMicrosoftOLEDBプロバイダー
  • ADOおよびJet4.0用のMicrosoftOLEDBプロバイダー

ウィザード(DTS)が機能しない場合(そして私はそうすべきだと思います)、このhttp://www.devasp.net/net/articles/display/771.htmlのようなものを試すことができ

INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4])

SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4]
FROM OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A;
Nick Kavadias picture
2008年12月22日
12

これは長い道のりのように聞こえるかもしれませんが、 Excelを使用してINSERT SQLコード

Excelファイルがサーバー上にないためにウィザードを使用できない場合にうまく機能します

SqlACID picture
2008年12月18日
7

次のようなOPENROWSETを使用できます。

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
  'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'

パスがローカルマシンではなく、サーバー上のパスであることを確認してください。

abk picture
2011年06月14日
4
go
sp_configure 'show advanced options',1  
reconfigure with override  
go  
sp_configure 'Ad Hoc Distributed Queries',1  
reconfigure with override  
go
SELECT * into temptable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1',
                'SELECT * FROM [Sheet1$]')

select * from temptable
Cyrus Loree picture
2011年09月04日
4

もう1つのオプションは、ExcelでVBAを使用し、マクロを記述してスプレッドシートデータを解析し、S​​QLに書き込むことです。

一例はここにあります: http

Sub InsertARecord() 
Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stCon As String, stSQL As String 
Set cnt = New ADODB.Connection 
Set rst = New ADODB.Recordset 

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY" 
cnt.ConnectionString = stCon 
stSQL = "INSERT INTO MyTable (Price)" 
stSQL = stSQL & "VALUES (500)" 

cnt.Open 
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText 

If CBool(rst.State And adStateOpen) = True Then rst.Close 
Set rst = Nothing 
If CBool(cnt.State And adStateOpen) = True Then cnt.Close 
Set cnt = Nothing 

End Sub
Jeff Keslinke picture
2008年12月18日
3

「wiz」では、「SQLServerのインポートおよびエクスポートウィザード」について話していると思います。 (私もかなり新しいので、ほとんどの質問、ましてやほとんどの答えを理解していませんが、私はこれを理解していると思います)。 スプレッドシートまたはそのコピーを取得できなかった場合は、インポートしたくない列を削除してから、ウィザードを使用しますか?

私は常にそれを使って必要なことを実行する能力を見つけており、SQL Server 2000のみを使用しています(他のバージョンがどのように異なるかはわかりません)。

編集:実際、私は今それを見ていて、既存のテーブルのどの行にどの列をマップするかを選択できるようです。 [ソーステーブルとビューの選択]画面で、使用しているデータシートを確認し、[宛先]を選択して、[編集...]ボタンをクリックします。 そこから、マップするExcel列とテーブル列を選択できます。

Richard Briggs picture
2014年02月06日
3

検証を含むデスクトップインターフェイスを備えたビジュアルツールが必要な場合は、このExcelツールがお勧めです。 このツールを使用して、マルチユーザーデータ編集タスクを作成したり、任意のソースからSQLサーバーにデータを貼り付けたりすることもできます。

Excelスプレッドシートを検証してSQLServerデータベースにインポートする方法:

http://leansoftware.net/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx

Troy picture
2010年02月13日
2

MicrosoftAccessは別のオプションです。 ExcelスプレッドシートをインポートするAccessデータベースをマシン上にローカルに配置し(ウィザードが利用可能)、 ODBCを介してSQLServerデータベーステーブルにリンクすることができ

次に、ExcelスプレッドシートのデータをSQLServerテーブルに追加するAccessのクエリを設計できます。

kajo picture
2012年06月21日
1

私が今まで使った中で最高のツールはhttp://tools.perceptus.ca/text-wiz.php?ops=7です。試しましたか?