• 締切済み
  • すぐに回答を!

SQLサーバーにcsv.ファイルをインポート

ACCESSデータベースをSQLサーバーへアップサイジングに挑戦しています。 csvファイルの取り込みについて質問させてください。 Accessでは、 DoCmd.TransferText acImportDelim, "○○インポート定義", "○○データ読込", filepath として、インポートしていました。 アップサイズ後、同じようにインポート定義を設定しようと思ったのですが、 ウイザードで設定できないのです。( 設定ボタンがグレーアウトしている。) それで、インポート定義なしでやってみたところ、 文字列フィールドで"00001"の表記が、すべて0が消えて"1"になってしまいます。 インポート後のテーブルのデータ型も、nvarcherになっているのですが・・ 正しいデータ型でインポートするにはどうすればよいでしょうか? よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.1
  • bin-chan
  • ベストアンサー率33% (1403/4213)

既に一度インポートしたのであればテーブルは出来てるんだから EnterpriseManagerでテーブル定義を変えて、レコード全部削除してから再度インポートするとか。 DTS(データ変換サービス)では定義できませんでしたっけ?

共感・感謝の気持ちを伝えよう!

質問者からの補足

早速ご回答いただきありがとうございます。 書き忘れましたが、SQLは2005で、Management Studio のインポートウイザードを使えば正しくインポートすることはできます。これを、VBAで行う場合にうまくいかないのです。 ウイザードを使った際に、「SSISパッケージの保存」というのがあるのですが、これが「インポート定義」のことなのでしょうか? あと、「DTS」というのは初めて知りまして、色々調べてみたのですが、よくわかりません。 初心者のため、たいへん申し訳ありません。 もう少し、詳しくご説明いただければとてもうれしいです。

関連するQ&A

  • Access2000のCSVファイルのインポートについて

    Access2000でCSVファイルをインポートしようと思っています。 インポート方法は、VBAで 「DoCmd.TransferText acImportDelim, , "テーブル名", "ファイル名"」を使用しています。 この時に、CSVファイルが次のようなデータです。 F1,F2,F3 0010,0200,0001A12 0011,0201,0021B12 (実際は、1000件近いデータです) これをインポートすると、 F1,F2,F3 10,200,1A12 11,201,21B12 となってしまいます。 頭の「0」を省きたくないのです。 文字列として取り込めないでしょうか? CSVのデータに""を自動でつける方法はないでしょうか? Accessの外部データの取り込みを使うと、文字列として指定できるのですが、VBAを使いワンクリックでデータを取り込もうとしています。 よろしくお願いします。

  • VBAでCSVファイルのインポートについて

    ACCESS2003でCSVファイルのインポートを行うVBAをご教授下さい。 ただし、CSVファイルは各項目がダブルコーテーションではさまれており、カンマはありません。 1行目にヘッダーがあります。 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True ↑ これだと、うまくインポートされませんでした。 大変困っております。 どうぞよろしくお願い致します。

  • CSVファイルをテーブルにインポートする

    1行目が項目名のCSVファイルをテーブルにインポートするため Private Sub CSVインポート_Click() DoCmd.TransferText acImportDelim, , "ブランド", "J:\ブランド.TXT" MsgBox ("CSVファイルインポート完了") End Sub を実行すると、f1,f2のフィールドがありませんとメッセージがあり F1,F2 のフィールドを追加し再度実行するとデータは f1,f2に入り 項目名もデータとして入っています。 1行目は項目名と宣言する設定はありますか。 よろしくお願いいたします。

  • MS AccessでExcelファイルのインポートは?

    AccessのVBAでExcelファイルをインポートするにはどうすればいいのでしょうか? ちなみに DoCmd.TransferText acImportDelim, , "Tmp名簿", strInPutPath & "\名簿.csv", True (strInPutPathは、ダイアログから取得したパスです) では、CSVファイル(TXTファイル)しか読み込めません。 (もちろん、そのため拡張子が「.csv」にしていますが 読み込むファイルをテキストファイルにしたら「.txt」でもいいです) 「ファイル」メニュー(コマンド)の「外部データの取り込み」→「インポート」では、Excelファイルも読み込めるので悔しいです。 これをVBAでやりたいんですが。 よろしくお願いいたします。

  • アクセスと同フォルダのCSVファイルをインポートしたい

    初心者で質問がわかりにくかったらすみません。 アクセスで、CSVファイルを取込みたいです。 下記のような構文で、取込む方法はわかりました。 Private Sub コマンド62_Click() DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _ "請求書", "C:\Documents and Settings\user3\デスクトップ\受付番号アクセス\これ!\請求書.csv", True End Sub しかし、これだと常に取込むCSVファイルが同じ場所ではないと、いけないので、他のPCで使用するとエラーになってしまいます。 なので、他のPCに移した場合でも、いちいち構文を修正せずに、 この構文が作成してあるアクセスと同フォルダの”請求書.csv”というファイル名のCSVデータを取込めるような、構文が知りたいです。 お手数ですが、教えてください。

  • AccessのマクロでCSVファイルをインポートする

    Accessのマクロ・VBAにてCSVファイルを インポートしたいのですが、うまくいきません。 DoCmd.TransferText acImportDelim, , "C:\Documents and Settings\yoshimi\My Documents\顧客マスタテーブル.csv", False 現在のコードです。 「オブジェクト'0.txt’が見つかりませんでした。 オブジェクトが存在していること、名前やパス名が正しいことを確認 してください。」 とエラーが表示されます。 過去ログを検索し、似たようなものを見つけ同じようにしたつもりです。 http://okweb.jp/kotaeru.php3?q=1691138 (回答のANo.1の定義の保存場所が分からずしていません) どこがおかしいのか教えていただきたいです・・・

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • AccessでCSVインポートのゼロサプレス停止

    AccessVBAでCSVインポート時にゼロサプレスをせずに行いたいです。 現状は下記のソースでインポートしていますが数字のみが入っているテキスト項目でゼロサプレスが行われてしまいます。 DoCmd.TransferText acImportDelim, , [テーブル名], [ファイル名] 下記のものについては事情があって対処として厳しいです。 ゼロサプレスのみを止めるよい方法はないでしょうか。 ■インポート定義を使用する ⇒50種類ほど列項目が異なるテーブルがあり、また時々フォーマット変更があるため事前に定義しておくことは難しい。 ■表示フォーマットを指定する ⇒5桁項目に4桁のデータであったり3桁のデータである場合があるがそれらをそのまま保持したい。 ■CSV作成時にダブルクオーテーションで囲む ⇒CSVの作成側に対応依頼はしたができないとの回答があった。 現状としてわかっていることとしては、値をダウブルクオーテーションで囲うことでゼロサプレスを回避できることはわかっているため、 Accessマクロの中でExcelを呼び出しダウブルクオーテーション付で保存できないかと考えていますがうまくいっていない状況です。 Access単独、Excelを使う方法などゼロサプレスを回避できる方法をご教示願います。

  • Access VBA CSVファイルのインポート

    お世話になります。 VBAにてCSVファイル(タブ区切り)をインポートするのに、 以下のように記述してますが、エラーとなります。 なお、インポート先のtempテーブルはインポートするCSVファイルの フィールドと同じ並びで予め作成したものです。 DoCmd.TransferText acImportDelim, , "temp", path, True 「実行時エラー2391 貼り付け先のtempテーブルには、'フィールド1_ フィールド2_フィールド3'フィールドがありません。」 このエラーを見る限り、フィールド1~3が一つのフィールドとして 認識されているように見受けられます。 タブ区切りなのか、カンマ区切りなのかを指定するようなパラメタは あるのでしょうか。 なお、当該CSVファイルをウィザードより手動でインポートする分には 問題無くインポート出来ます。 ************** インポートするCSVファイルはユーザーにより見出し(フィールド)の 並びが異なる場合がある為、インポート定義を予め作っておくことが できない状況です。 ご教授の程、宜しくお願い致します。

  • DoCmd.Transferで更新できませんか

    DoCmd.Transferで更新できませんか Access 2010を使っています。 DoCmd.TransferText acImportDelimを使ってCSVデータを取り込んでいます。 とても便利なのですが、更新もしてくれないかなと思い始めました。 例えば、テーブルに主キーを設定して、CSVを取り込んだ時に主キーをもとに 更新をおこなってくれないかなと思っています。 DoCmd.TransferTextではできなさそうですが、何か簡単にやる方法はないでしょうか?