0

Excel ワークシートからデータをインポートする最良の方法は何ですか? 現在、SSMS Express を使用しているため、SQL インポート ウィザードにアクセスできません。BULK INSERTコマンドを実行する権限もありません。

私の現在のワークフローは次のとおりです。Excel ファイルをクリーンアップし、CSV として保存し、SQLite データベースにインポートします。RazorSQL などの IDE を使用して、SQLINSERTステートメントを生成します。

これは、約 75000 行の Excel ファイルにヒットするまでうまく機能しました。SSMSは、「クエリがエラーで終了しました」などのエラーを出すだけです。エラーメッセージは表示されません。GO各行の最後に追加しようとしましたが、メモリ不足エラーが発生しました。

私のオプションは何ですか?

4

4 に答える 4

0

以下を使用できます。

  1. bcp ユーティリティ (ファイル システム データ ダンプとデータベースの間)、
  2. OPENQUERY (SSMS から使用可能、Excel/csv などの外部データソースとデータベース間で動作)、
  3. BULK INSERT (SSMS から使用でき、ユーザー定義の構造を持つ外部ファイルとデータベースの間で機能します)、
  4. SSIS (通常は dtsx パッケージとして、独自の GUI を持ち、さまざまなソースと宛先で動作します)
  5. INSERT ステートメントのセット (すべて次々に、最終的に GO でスライスされるか、UNION ALL でパックされます)
  6. XML 変数でシリアル化されたレコードのセット (SSMS からのみ使用できます。FOR XML および XML 関数を使用して自分でシリアル化/逆シリアル化する必要があります)

確かに他の可能性もありますが、これらはおそらく最もよく使用されるものです。

編集:スクリプトの5〜10K行ごとにGOを試すことができるようです。それがうまくいかない場合は、XML シリアライゼーション/デシリアライゼーションが有効な方法かもしれません。

于 2013-06-14T13:47:36.177 に答える
0

あなたの質問に答えるために、Excel からデータをインポートする最良の方法は、私の過去の経験では、Excel データを C# に読み込み、必要に応じてクリーンアップとフォーマットを行うことでした。Excel はデータをいじるのが好きなので、SqlBulkCopy ( SQL Server に挿入するには、select/insert パーミッションが必要です)。C#からExcelを読むのに助けが必要な場合は、このSOの回答を参照してください

更新: 開発者ではない場合は、bcp ユーティリティを使用してみてください(選択/挿入権限のみが必要です)。最初に Excel ファイルを CSV として保存してから、SQL サーバーに直接インポートする必要がある場合があります。このSO 回答を参照してください。

于 2013-06-14T13:46:27.760 に答える
0

手っ取り早い回避策: 50k のバッチで行をプルします。

select * 従業員制限 50000 から

select * 従業員制限 50000、100000 から選択

http://www.razorsql.com/articles/mysql_limit_query.htmlから

于 2013-06-14T14:18:41.547 に答える
0

リンク サーバーを使用して Excel ドキュメントに接続できますか? SQL Server リンク サーバーと分散クエリで Excel を使用する方法

于 2013-06-14T13:50:02.297 に答える