• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLSever 一括インポートについて)

SQLServerで複数のCSVファイルを一括インポートする方法

このQ&Aのポイント
  • SQLServerで大量にあるCSVファイルを一括でインポートする方法について調べています。各CSVファイルには列名が書かれており、同じ構成ですが、コードが見つからず困っています。
  • MSDNで見つけたコードを試したところ、エラーメッセージ「列名 'IntCol' が無効です。」が表示されました。解決方法を教えてください。
  • 単純に同じ構成の複数のCSVファイルを1つのテーブルに一括でインポートする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • necomimi3
  • ベストアンサー率40% (124/307)
回答No.2

>フィールド ターミネータ エラーメッセージからして列区切りが認識されてないように思います。 区切りはTABコードでしょうか? 他の場合は、指定しないといけなかったように思います。

kikei
質問者

お礼

csvファイルなので列の区切りはカンマ(,)です。

その他の回答 (1)

  • necomimi3
  • ベストアンサー率40% (124/307)
回答No.1

インポートだけなら BULK INSERT テーブル名 FROM 'ファイル名' くらいでいいんじゃないですか? インデックス等の設定で重複レコードがあると失敗するのと CSVの1行目が邪魔っていうのはありますが…

kikei
質問者

お礼

回答ありがとうございます。 ですがエラーとなってしまいます。 bulk insert テーブル名 from 'C:\Temp\190401_01.csv' 結果 --------------------------------------------------------- メッセージ 4866、レベル 16、状態 1、行 1 一括読み込みに失敗しました。データ ファイルの行 1、列 1 で、列が長すぎます。フィールド ターミネータと行ターミネータが正しく指定されていることを確認してください。 メッセージ 7399、レベル 16、状態 1、行 1 リンク サーバー "(null)" の OLE DB プロバイダ "BULK" により、エラーがレポートされました。プロバイダからエラーに関する情報を取得できませんでした。 メッセージ 7330、レベル 16、状態 2、行 1 リンク サーバー "(null)" の OLE DB プロバイダ "BULK" から行をフェッチできません。 --------------------------------------------------------- 1行目の列名のせいでエラーが出てるのかと思い 下記コードで試してみたのですが bulk insert テーブル名 from 'C:\Temp\190401_01.csv' WITH (firstrow=2); GO --------------------------------------------------------- メッセージ 4866、レベル 16、状態 8、行 1 一括読み込みに失敗しました。データ ファイルの行 1、列 1 で、列が長すぎます。フィールド ターミネータと行ターミネータが正しく指定されていることを確認してください。 メッセージ 7301、レベル 16、状態 2、行 1 リンク サーバー "(null)" の OLE DB プロバイダ "BULK" から必要なインターフェイス ("IID_IColumnsInfo") を取得できません。 --------------------------------------------------------- となり、読み込めませんでした。 元となるテーブルと読み込むテーブルの列数に違いはありません。 また各列のvarchar型、int型、datetime型もすべて一致しております。

関連するQ&A