• ベストアンサー

値がこの列の整合性制約に違反しました

SqlServerの「インポートおよびエクスポート」ウィザードで エクセルのデータをインポートする時に起こりました。 nvarchar(8) のフィールドに Double型のデータのインポートはうまくいきました。 nvarchar(8) のフィールドに VarChar型のデータのインポートはうまくいきました。 ですが、VarChar型とDouble型が混在しているとタイトルにあるエラーが起こりました。 エクセルで数値データが入っているとインポートウィザードでは勝手にDoubleにするらしく 回避する方法がわかりません。 どうすればいいでしょうか?

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

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.2

確かに「なぜ」なのかは不明ですが、情報が足りないのかも知れません。(SQLServer、Excelのバージョンやデータの中身等) 現状、質問から読み取れる内容でやってみた画像を添付しておきます。 ちなみに、SQLServer2008、Excel2003です。 画像中の「B列」が数値と文字データが混在する列です。当方では「'」がないデータはDoubleと認識しますが、「'」を付けたデータではVarCharと認識されました。

sara_seiji
質問者

お礼

再度試してみたところ、ちゃんとVarCharと認識してくれました。 色々試していたのでどこかで抜けがあったのかもしれません。 無事に文字データとして認識しました。 ありがとうございました。

その他の回答 (1)

  • hogya
  • ベストアンサー率67% (49/73)
回答No.1

セルの値の先頭に「'」を追加して文字列データとして認識させてみてはどうでしょう。

sara_seiji
質問者

お礼

回答有り難うございます。 ですが、セルの値の先頭に「’」を追加しても、 SqlServerの「インポートおよびエクスポート」ウィザードでは、 なぜか、数値データ(Double型)として認識してしまいます。 他の手段はないでしょうか?

関連するQ&A

  • sqlserverで書式チェックしたい

    sqlserver2008,2012を使用しています。 あるフィールドの値が、"999-999"の書式になっているかチェックを行いたいのですが、 SQLで簡単にチェックできますか? 文字列(nvarchar)エリアで、3桁の数値+'-'+3桁の数値 以外のデータを抽出したいと思っております。 どなたかご教授お願いします。

  • 値("001")と数値(1)が混在する列を整数型のフィールドに保存する

    こんにちは。お世話になります。 VBAで、ExcelシートをAccess側でデータ型を指定してテーブルにインポートする方法 をご教授いただきたく書き込みをさせていただきました。 値("001")と数値(1)が混在する列を 整数型のフィールドに保存するというようなことがしたいです。 今までは、   1.ExcelをCSV形式で保存する。   2.インポート定義ですべてテキストを指定   3.テーブルの項目定義でデータ型を指定したところにインポート ということをおこなっておりましたが、 1.のCSV保存の際にデータの丸めが発生してしまう問題が発生してしまいました。 (※本来の値が123456789.12であるような場合に、   123456789.1とシートに表示され、そのままCSV化してしまう。) 直接Excelからですと正しくデータがインポートされるようですので、 いろんなサイトを参考に、   ・すべてテキスト型の仮テーブルを動的に作成し、    Excelシートをインポート というところまで作ってみたのですが、 これを本来のデータ型を指定したテーブルに追加しようとすると ”型が違います”エラーがでてしまって、 CSVのように無理やりデータを受け取ってはくれず どうしたらいいのか壁にぶつかって困っています。 Accessを使われている方々はどんな方法で あまりデータがきれいでないExcelシートの場合のインポートをされているのでしょうか? 検索しても同じことで困ってらっしゃる方の質問があまりないことからも 自分の知識不足で、回りくどい変な方法になってしまっている気がしてなりません。 お時間のある時に是非アドバイスよろしくお願いいたします。 Access2002:WindowsXP

  • オブジェクトエクスポーラを使ったインサートについて

    はじめまして OS vista Ultimate Sql Server2005, Accsess2003 SqlServer2005のオブジェクトエクスポーラのタスク、データのインポートを使ってAccess2003で作ったデータをインポートしたいのですがエラーでうまくいきません。手順は、Sqlserverで構造が定義されたテーブルをオブジェクトエクスポーラのデータのエクスポートでAccessの空テーブルにエクスポートしそれをAccessで加工し、そのデータをインポートしたいのですが下記エラーとなります。 何か回避策があれば教えて頂きたいのですが。 ・FOREIGN KEY 制約でテーブル 'Teble1' が参照されているので、このテーブルは切り捨てられません。 よろしくお願いします。

  • エクセルの最大行数

    SQLserverからデータをエクセルにエクスポートしていますが エクセル側で「65536」行超えてますってエラーが出ます。 この行数制限はエクセルの仕様なんでしょうか?。回避する方法は 無いのでしょうか。教えて頂ければ幸いです。

  • ACCESSからエクセルへのエクスポート

    非常に困っています。どなたか教えて下さい。 エクセルのCSVファイルからアクセスのテーブルにデータをインポートして そのテーブルから新しいエクセルファイルにデータをエクスポートします。 (1)エクセルの元ファイル 列1 数値 1桁 (2)アクセスにインポート(インポート定義)        列1 数値型 1桁                 書式で3桁にする。 (3)エクセルにエクスポート(エクスポート定義)  列1 1桁になってしまいます。 ※(2)までは書式に000を入れることで解決しました。   (3)にエクスポートした状態で 列1を3桁にしたいのです                     例えば0→000 ちなみにアクセスは2002を使用しています。 どなたか教えて下さい。本当に困っています。

  • アクセス:エクセルからのインポートエラーについて

    よろしくお願いします。アクセス初心者です。 エクセルから名簿形式のシートをアクセスにインポートしたときの次のようなエラー対策について教えてください。 ・エクセル側で日付と文字が混在しているフィールドがいくつかあります。(例)「2005/10/10」と「入院中」 ・日付と文字が混在しているフィールドがいくつかあっても、アクセスにインポートしたら、アクセス側であるものは「日付/時刻型」、あるものは「テキスト型」に自動でなっています。 ・このとき、アクセス側で「日付/時刻型」となっているフィールドでは、エクセル側で日付がはいっているものは取り込まれ、文字が入っているものがはじかれるようです。 ・逆にアクセス側で「テキスト型」と自動でなっているフィールドの場合には、日付も文字もインポートできています。(但し、日付が文字形式となっているようです) ◆まず、なぜ、同じ日付と文字が混在しているフィールドなのに、「日付/時刻型」になったり「テキスト型」になるのでしょうか? ◆このエラー回避対策はどうすればよいでしょうか。 「テキスト型」に統一してインポートできればいいのですが・・・ 以上、よろしくお願いいたします。

  • アクセスからファイルメーカーにインポート

    アクセスのテーブルにある各フィールドの値をファイルメーカーの決まったフィールドにインポートしたいのですが… 今はアクセスからエクセルにエクスポートとして、ファイルメーカでエクセルデータを毎回インポートしています。 毎日のことなので、面倒なんです。 宜しくお願いします。

  • Excelインポート時にテキスト型になってしまう

    早速ですが質問させてください。 Access2003を使用しています。 Excelでデータを作り、Accessへインポートした際にあるフィールドには数字と空欄しかないのにデータ型がテキスト型に設定されてしまいます。 数値型でインポートされるようにするにはどうしたらよいでしょうか。 Excelには1行目に感じでフィールド名が入っているだけで、他は数字と空欄です。 数値型にするにはフィールド名も数字にしないといけないとかありますか? よろしくお願いいたします。

  • SqlServerにデータを大量インサートする簡単な方法

    SqlServerで大量データ(一万件とか)のインサートを行うには どんな方法がありますか? エクセルにエクスポートした後コピー(ドラッグ)して件数を増やし インポートしようとしましたが、 エクスポートした件数分しかインサートされませんでした。 みなさん、どんな方法を使ってますか? 教えてください! よろしくお願いいたします。

  • Access2002でExcel2002のデータをインポートしようとした際に起こるエラー

    予めExcel2002で作成したワークシート(名前付)に、Access2002から一度データをエクスポートします。 この時点では旨くいっています。 Excelに出力する理由は回帰分析等、いくつかの分析を行う為で、Accessがクエリに搭載していない関数を使用するためです。 ここで、分析結果を別シート(同一ブック内)で参照するのですが、この参照するセル範囲(名前付部分)をインポートすると実際にインポートしたいのは分析結果である数値なのですが、インポートできず「データ型の変換エラー」が発生します。 VBで書くことも検討したのですが、ロジックが大変ややこしくなることと、Excelへ出力した方が時間的に早いので、エクスポートした後、結果数値のみをインポートするという手順をとっています。 インポートしようとしているデータは(数値)(テキスト)(日付)(日付)(数値)(数値)(数値)(数値)の順で、1行目にインポートしたいデータを配置しています。 このAccessからExcelへデータをエクスポートし、ExcelからAccessへ関数の入っているセルに存在する結果数値のみを取り込む方法をお教え下さい。 よろしく御願いします。