web-dev-qa-db-ja.com

Excelスプレッドシートの列をSQL Serverデータベースにインポートする

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

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

63
user47206

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

50
Tejas

Microsoft提案 いくつかの方法:

  • SQL Serverデータ変換サービス(DTS)
  • Microsoft SQL Server 2005統合サービス(SSIS)
  • SQL Serverリンクサーバー
  • SQL Serverの分散クエリ
  • ActiveXデータオブジェクト(ADO)およびMicrosoft OLE SQL Server用DBプロバイダー
  • ADOおよびJet 4.0用のMicrosoft OLE DBプロバイダー

ウィザード(DTS)が機能しない場合(そして、そうすべきだと思います)、次のようなものを試すことができます http://www.devasp.net/net/articles/display/771.html which基本的に次のようなことをすることをお勧めします

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;
25
inspite

これは長い道のりのように聞こえるかもしれませんが、 ExcelがINSERTを生成する を使用して、クエリアナライザーに貼り付けてテーブルを作成するSQLコードを確認することをお勧めします。

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

12
Nick Kavadias

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

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

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

7
SqlACID
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
4
abk

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

1つの例を次に示します。 http://www.ozgrid.com/forum/showthread.php?t=26621&page=1

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
4
Cyrus Loree

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

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

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

3
Richard Briggs

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

私はいつもそれで必要なことをする能力を見つけましたが、私はSQL Server 2000でしかありません(他のバージョンの違いはわかりません)。

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

3
Jeff Keslinke

Microsoft Accessは別のオプションです。 Excelスプレッドシートをインポートする(ウィザードが使用可能)および ODBC経由でSQL Serverデータベーステーブルにリンクする のマシン上にローカルでAccessデータベースを作成できます。

その後、ExcelスプレッドシートからSQL Serverテーブルにデータを追加するアクセスでクエリを設計できます。

2
Troy
1
Such

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

1
kajo

Excel + SQLCMD + Perl = exceltomssqlinsert

また、MSSQL dbのフロントエンドとしてExcelを使用できます。生成された各sql挿入ファイルの先頭にある切り捨てテーブルに注意してください...

0
Yordan Georgiev

インポートウィザードはそのオプションを提供します。このオプションを使用して、インポートするデータの独自のクエリを作成するか、データのコピーオプションを使用して[マッピングの編集]ボタンを使用し、インポートしない列を無視できます。

0
DCNYAM

DTS(現在はSQLサーバーのインポートおよびエクスポートウィザードとして知られています)を使用しました。これを使用しました tutorial Sql 2008およびExcel 2010(14.0)でもうまく機能しました

これが役立つことを願っています

-D

0
Diego C.

まず、32ビットバージョンのインポートウィザードを試してください。これは、サポートされているインポート形式がはるかに多いことを示しています。

背景:すべては、Office(ランタイムエンジン)のインストールに依存します。

Office 2007以降をインストールしていない場合、インポートWizard(32ビット)では、Excel 97-2003(.xls)ファイルのみをインポートできます。

Office 2010とgeater(64ビットでもお勧めしません)がインストールされている場合、インポートWizardはExcel 2007+(.xlsx)ファイルもサポートします。

ランタイムの概要を確認するには、 「Microsoft.ACE.OLEDB.12.0」プロバイダーがローカルマシンに登録されていません を参照してください。

0
Bernhard